链接升压库时出现的另一个"undefined reference"错误
Another "undefined reference" error when linking boost libraries
我看到过其他几篇处理这个完全相同问题的帖子。但是,他们的解决方案似乎都不适合我。我正在编译以下代码:
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> #include <boost/timer/timer.hpp> using namespace boost::numeric::ublas; int main(){ matrix<double> mat1 (3,3); matrix<double> mat2 (3,3); matrix<double> mat3 (3,3); unsigned k=0; for(unsigned i = 0; i < mat1.size1(); ++i){ for(unsigned j = 0; j < mat1.size2(); ++j){ mat1(i,j) = k; mat2(i,j) = 2*k++; } } k=0; if(1){ boost::timer::auto_cpu_timer t; while(k<1000){ mat3 = prod(mat1,mat2); k++; } } return 0; }我正在使用以下方法从命令行进行编译:
$ g++ matrix_test.cpp -o matrix_test -lboost_system -lboost_timer
并收到以下错误:
usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_timer.so: 对"boost::chrono::steady_clock:now()"
的未定义引用 collect2:错误:ld 返回 1 个退出状态如果我在编译时添加 -lboost_chrono,我会收到此错误:
/usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_chrono.so: 对"clock_gettime"
的未定义引用 collect2:错误:ld 返回 1 个退出状态我可以clock_gettime追溯到sys/time.h。不幸的是,我找不到要链接到的相应 .so 文件。我在这里错过了什么?
必须将-lrt
添加到链接库中
g++ matrix_test.cpp -o matrix_test -lboost_system -lboost_timer -lboost_chrono -lrt
更新 (2016-08-31)
这似乎仍然是一个问题。当你查找man clock_gettime
时,这会导致解决方案(-lrt
),但它也说
与 -lrt 链接(仅适用于 2.17 之前的 glibc 版本)。
因此,当您的glibc较新时,您的问题可能是其他问题。
将-lrt
添加到您的 g++ 调用中 – clock_gettime
在 librt.so
中。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 链接升压库时出现的另一个"undefined reference"错误
- C++:从另一个文件"undefined reference to"中的类中的函数返回结构
- "Undefined symbols for architecture x86_64"尝试包含另一个文件中的功能