如何将犰狳库修复为 C++
Posted
技术标签:
【中文标题】如何将犰狳库修复为 C++【英文标题】:How to fix the armadillo library to c++ 【发布时间】:2015-07-02 05:20:55 【问题描述】:我正在使用 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'
编辑:
如果您从他们的网页下载犰狳,我已经安装了犰狳包,既尝试使用“brew install armadillo
”,也尝试使用 README.txt 中提到的步骤。
编辑2: 在 textmate 中,我向 TM_CXX_FLAGS 中的变量添加了一个标志: -I /usr/local/include -DARMA_DONT_USE_WRAPPER -lblas -llapack .. 这似乎解决了通过 textmate 编译时的问题。但是我不明白如何解决它代码
编辑3: 编译时发现这是警告...
clang:警告:-lblas:“链接器”输入未使用 叮当声:警告:-llapack:“链接器”输入未使用 叮当声:警告:-llapack:“链接器”输入未使用 叮当声:警告:-lblas:“链接器”输入未使用
有人知道如何在 Xcode 中为编译器正确添加标志吗?
【问题讨论】:
1) 你检查过路径/usr/local/include/armadillo
吗?可能你需要#include "/usr/include/armadillo"
? 2) 你确定不需要#include "/usr/local/include/lapacke.h"
? (或类似路径)
你忘记链接-larmadillo
了吗?例如:g++ code.cpp -o code -O2 -larmadillo
当我使用 g++ 的东西时,我收到以下错误:ld: library not found for -larmadillo clang: error: linker command failed with exit code 1 (use -v to see invocation) and when i尝试使用“/usr/local/include/lapacke.h”它说找不到文件
【参考方案1】:
当我开始使用犰狳编程时,我首先遇到了同样的问题。对于 g++,我只需添加 -larmadillo
作为命令行选项。比如这个
g++ -O2 -o armadillo_example armadillo_example.cpp -larmadillo
【讨论】:
以上是关于如何将犰狳库修复为 C++的主要内容,如果未能解决你的问题,请参考以下文章