Un autre “undefined reference” erreur lors de la liaison de bibliothèques boost
J'ai vu plusieurs autres posts qui traitent de ce même problème. Cependant, aucune de leurs solutions semblent fonctionner pour moi. Je suis de compiler le code suivant:
#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;
}
Je compile en ligne de commande avec:
$ g++ matrix_test.cpp -o matrix_test -lboost_system -lboost_timer
et de recevoir le message d'erreur suivant:
usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_timer.donc:
undefined reference to `boost::chrono::steady_clock::now()'
collect2: erreur: ld a retourné 1 code de sortie
Si j'ajoute -lboost_chrono quand je compile, j'obtiens cette erreur:
/usr/lib/gcc/i686-redhat-linux/4.7.0/../../../libboost_chrono.donc:
undefined reference to `clock_gettime'
collect2: erreur: ld a retourné 1 code de sortie
Je peux trace clock_gettime à sys/time.h. Malheureusement, je ne peux pas trouver un correspondant .si le fichier à lier. Ce qui me manque ici?
OriginalL'auteur Joshua Hewlett | 2012-11-30
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter
-lrt
à vos bibliothèques de liensMise à jour (2016-08-31)
Cela semble encore être un problème. Quand vous recherche
man clock_gettime
, ce qui conduit à la solution (-lrt
), mais il dit aussiAinsi, lorsque votre version de la glibc est plus récente, votre problème pourrait être quelque chose d'autre.
OriginalL'auteur Olaf Dietsche
Ajouter
-lrt
à votre g++ invocationclock_gettime
est danslibrt.so
.OriginalL'auteur ildjarn