编译犰狳时出错
Posted
技术标签:
【中文标题】编译犰狳时出错【英文标题】:Error Compiling Armadillo 【发布时间】:2016-12-24 01:21:06 【问题描述】:我在尝试编译犰狳时遇到以下错误:
Undefined symbols for architecture x86_64:
"_wrapper_ddot_", referenced from:
void arma::syrk_vec<true, false, false>::apply<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in exampleArma.o
void arma::syrk_vec<true, false, false>::apply<double, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, double, double) in exampleArma.o
"_wrapper_dgemm_", referenced from:
void arma::gemm<true, false, false, false>::apply_blas_type<double, arma::Mat<double>, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double) in exampleArma.o
void arma::gemm<true, false, false, false>::apply_blas_type<double, arma::Row<double>, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, arma::Row<double> const&, double, double) in exampleArma.o
"_wrapper_dgemv_", referenced from:
void arma::glue_times::apply<double, true, false, false, arma::Mat<double>, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double) in exampleArma.o
void arma::glue_times::apply<double, true, false, false, arma::Row<double>, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, arma::Row<double> const&, double) in exampleArma.o
"_wrapper_dsyrk_", referenced from:
void arma::syrk<true, false, false>::apply_blas_type<double, arma::Mat<double> >(arma::Mat<double>&, arma::Mat<double> const&, double, double) in exampleArma.o
void arma::syrk<true, false, false>::apply_blas_type<double, arma::Row<double> >(arma::Mat<double>&, arma::Row<double> const&, double, double) in exampleArma.o
我正在使用 makefile 进行编译,并且我已经尝试了此处找到的解决方案,但没有好的结果。到目前为止,我的项目具有使用 makefile 编译的不同类。其中两个使用犰狳:第一个没有任何问题。相反,这个新类给了我编译错误。我发现这里的错误是使用犰狳的cor
函数给出的。当我在第一堂课中只使用 rowvec 或 cx_rowvec 时,一切都很完美。调试我注意到,当我用cor
取消注释行代码时,我得到了错误。有人能帮我吗?我安装了最后一个犰狳版本 7.600.2。
现在我尝试使用不同的 Armadillo 库函数:听起来我没有其中的一些。例如使用以下函数mean(X),var(X),stddev(X)
我没有任何问题,它编译完美。相反,当我尝试使用像cov(X), cor(X)
这样的其他功能时,我得到了那个错误。我想我的库中没有这些功能。所以为了解决这个问题,我尝试安全地删除旧库并安装一个新库。不幸的是,错误仍然存在。我希望这次更新会有所帮助。我不认为我在我的 makefile 中犯了一些错误,因为当我在我的代码中使用一些特定的函数时它不能很好地编译。
谢谢大家!
【问题讨论】:
What is an undefined reference/unresolved external symbol error and how do I fix it?的可能重复 查看犰狳Frequently Asked Questions页面的“链接”部分。 【参考方案1】:我解决了在 armadillo_bits/config.hpp 中注释以下行的问题:
#define ARMA_USE_LAPACK
和#define ARMA_USE_BLAS
。
即使它有效,它也是错误的解决方案。此处的链接部分描述了更好的解决方案http://arma.sourceforge.net/faq.html#linking。
【讨论】:
这是错误的。更好的解决方案在犰狳Frequently Asked Questions 页面的“链接”部分中描述。以上是关于编译犰狳时出错的主要内容,如果未能解决你的问题,请参考以下文章