g ++编译和链接与使用Armadillo库立即构建不同的结果

时间:2015-11-10 06:00:47

标签: c++ armadillo

我正在测试Armadillo库并编写了四个要构建的cpp文件 我可以用一个命令构建它们:

g++ chol.cpp  conj_grad.cpp  main.cpp  special_mat.cpp -larmadillo -std=c++14 -o test

但是,当我首先编译单个文件并将它们链接起来时,我会遇到链接错误:

g++ -c -std=c++14 -g -O1 main.cpp -o main.o

g++ -c -std=c++14 -g -O1 chol.cpp -o chol.o

g++ -c -std=c++14 -g -O1 conj_grad.cpp -o conj_grad.o

g++ -c -std=c++14 -g -O1 special_mat.cpp -o special_mat.o

g++ -larmadillo  main.o chol.o conj_grad.o special_mat.o -o test

错误讯息:

main.o: In function `main':
/home/me/doc/study/numerical_optimization/chap5/main.cpp:71: undefined reference to `TLS init function for arma::arma_rng_cxx11_instance'
main.o: In function `std::__detail::_Adaptor<std::mersenne_twister_engine<unsigned long, 64ul, 312ul, 156ul, 31ul, 13043109905998158313ul, 29ul, 6148914691236517205ul, 17ul, 8202884508482404352ul, 37ul, 18444473444759240704ul, 43ul, 6364136223846793005ul>, double>::operator()()':
/usr/include/c++/5/bits/random.h:192: undefined reference to `arma::arma_rng_cxx11_instance'
main.o: In function `main':
/home/me/doc/study/numerical_optimization/chap5/main.cpp:71: undefined reference to `TLS init function for arma::arma_rng_cxx11_instance'
main.o: In function `std::__detail::_Adaptor<std::mersenne_twister_engine<unsigned long, 64ul, 312ul, 156ul, 31ul, 13043109905998158313ul, 29ul, 6148914691236517205ul, 17ul, 8202884508482404352ul, 37ul, 18444473444759240704ul, 43ul, 6364136223846793005ul>, double>::operator()()':
/usr/include/c++/5/bits/random.h:192: undefined reference to `arma::arma_rng_cxx11_instance'

我省略了更多的链接错误。

为什么?这两种构建方法有什么区别?感谢。

0 个答案:

没有答案