【发布时间】:2015-09-12 10:42:29
【问题描述】:
我目前正在尝试使用我不太熟悉的库来编译程序。当我运行编译器时,我得到以下输出/错误:
Undefined symbols for architecture x86_64:
"_cblas_ddot", referenced from:
shark::LDA::train(shark::LinearClassifier<shark::blas::vector<double> >&, shark::LabeledData<shark::blas::vector<double>, unsigned int> const&) in libshark.a(LDA.cpp.o)
shark::LDA::train(shark::LinearClassifier<shark::blas::vector<double> >&, shark::WeightedLabeledData<shark::blas::vector<double>, unsigned int> const&) in libshark.a(LDA.cpp.o)
我目前的想法是,这是由于缺少 BLAS 库,我刚刚下载并编译(来自 fortran 代码?)。
用于编译的命令行参数看起来像 thsi
g++ -o example -I/to/boost/include -I/to/shark/include -L/to/boost/lib -L/to/shark/lib -L/to/BLAS -lshark -lblas -l(boost_flags)
在/to/BLAS 有一个libblas.a,我跑了nm libblas.a,它给出了一条线
libblas.a(ddot.o):
00000000000001c0 s EH_frame1
0000000000000000 T _ddot_
不至于太安全,我假设这意味着库确实有符号,但没有 _cblas_ 前缀。
从这一点上我能做些什么?我可以更改符号名称吗?还是我需要将此库与其他内容链接?
我使用 OS X Mavericks
提前致谢:)
【问题讨论】:
-
您是否有权访问源文件 LDA.cpp?从表面上看,您可能需要在链接中添加一些内容,如果您能找到要添加的内容的线索。检查 LDA.cpp 可能会提供这样的线索。
-
我什至不确定我是否有 LDA,我会调查一下,谢谢!
标签: c++ c compilation linker blas