我已经看过几个其他帖子来处理这个完全相同的问题 . 但是,他们的解决方案似乎都不适合我 . 我正在编译以下代码:
#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:error :ld返回1退出状态
如果我在编译时添加-lboost_chrono,我会收到此错误:
/usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_chrono.so:未定义引用`clock_gettime'colle2:错误:ld返回1退出状态
我可以将clock_gettime跟踪到sys / time.h . 不幸的是,我找不到要链接的相应.so文件 . 我在这里错过了什么?
2 回答
您必须将
-lrt
添加到链接库中更新(2016-08-31)
这仍然是一个问题 . 当您查找
man clock_gettime
时,这会导致解决方案(-lrt
),但它也会说因此,当你的glibc更新时,你的问题可能就是其他问题 .
将
-lrt
添加到您的g调用 -clock_gettime
位于librt.so
中 .