我已经安装了带有Homebrew的Armadillo
brew install homebrew/science/armadillo
我尝试用
编译一些代码g++-4.7 -I/usr/local/include file1.cpp -O2 -llapack -lblas
但我得到的只是
Undefined symbols for architecture x86_64: "_wrapper_ddot_", referenced from:
void arma::syrk<false, false, false>::apply_blas_type<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in ccYKNLEL.o "_wrapper_dgemm_", referenced from:
_main in ccYKNLEL.o "_wrapper_dgemv_", referenced from:
_main in ccYKNLEL.o "_wrapper_dsyrk_", referenced from:
void arma::syrk<false, false, false>::apply_blas_type<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in ccYKNLEL.o ld: symbol(s) not found for architecture
x86_64 collect2: error: ld returned 1 exit status
和
相同g++-4.7 -I/usr/local/include file1.cpp -O2 -framework accelerate
还包括-larmadillo
g++-4.7 -I/usr/local/include file1.cpp -O2 -larmadillo -llapack -lblas
它返回
library not found for -larmadillo
并在
/usr/local/Cellar/armadillo/4.100.2/lib/
我发现像libarmadillo.4.10.2.dylib
这样的库,但它们不能包含在-I
可能是什么问题?
答案 0 :(得分:2)
您忘记将-larmadillo
添加到编译命令中。这应该有效:
g++-4.7 -I/usr/local/include file1.cpp -O2 -larmadillo -llapack -lblas
请注意,这已在Armadillo附带的README.txt
文件中进行了解释。
大多数开源软件都附带自述文件或其他文档,在使用该软件之前阅读文档通常是一个好主意。
答案 1 :(得分:1)
可以使用-L
g++ -I/usr/local/include -L/usr/local/lib file1.cpp -O2 -llapack -lblas -larmadillo