私はこれとまったく同じ問題を扱っている他のいくつかの投稿を見てきました。しかし、それらの解決策はどれも私にはうまくいかないようです。私は次のコードをコンパイルしています:
#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ファイルが見つかりません。ここで何が欠けていますか?