如何将armadillo库修复为c ++

时间:2015-07-02 05:20:55

标签: c++ linker armadillo

我正在使用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中为编译器正确添加标志?

1 个答案:

答案 0 :(得分:2)

当我开始使用犰狳编程时,我首先遇到了同样的问题。对于g ++,我只需添加-larmadillo作为命令行选项。比如这个

g++ -O2 -o armadillo_example armadillo_example.cpp -larmadillo