我正在使用macbook来编写一些代码。最近我想和犰狳库一起用C ++做点什么。但是在安装之后它似乎无法正常工作。
例如,我可以编写arma::mat
变量等,但是当我在TextMate中运行此代码时:
vec q = randu<vec>(5);
cout << normalise(q);
我收到此错误输出:
"Undefined symbols for architecture x86_64:
"_wrapper_dgesdd_", referenced from:
void arma::lapack::gesdd<double>(char*, int*, int*, double*, int*, double*, double*, int*, double*, int*, double*, int*, int*, int*) in test-56d704.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
rm: /var/folders/sh/vr2n15ln47j0k33yh1j0_tyw0000gn/T/test.cpp.Sfz5vezN: No such file or directory
奇怪的是,如果我不使用normalize或norm函数,那么编译得很好。
我将库包含为#include '/usr/local/include/armadillo'
编辑:
我已经安装了armadillo软件包,既尝试使用“brew install armadillo
”,也使用README.txt中提到的步骤,如果你从他们的网页下载armadillo。
EDIT2: 在textmate中,我在TM_CXX_FLAGS中为变量添加了一个标志:-I / usr / local / include -DARMA_DONT_USE_WRAPPER -lblas -llapack ..这似乎解决了通过textmate编译时的问题..但是我无法理解如何修复它的XCode
EDIT3: 在编译时发现这是警告......
clang:警告:-lblas:'链接'输入未使用 clang:警告:-llapack:'链接器'输入未使用 clang:警告:-llapack:'链接器'输入未使用 clang:警告:-lblas:'链接器'输入未使用的
任何人都知道如何在Xcode中为编译器正确添加标志?
答案 0 :(得分:2)
当我开始使用犰狳编程时,我首先遇到了同样的问题。对于g ++,我只需添加-larmadillo
作为命令行选项。比如这个
g++ -O2 -o armadillo_example armadillo_example.cpp -larmadillo