编译犰狳时出错
Error Compiling Armadillo
我在尝试编译 Armadillo 时遇到以下错误:
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 进行编译,我已经尝试了此处找到的解决方案,但没有很好的结果。到目前为止,我的项目有不同的 classes 是用 makefile 编译的。其中两个使用犰狳:第一个没有显示任何问题。相反,这个新的 class 给我编译错误。我发现这里的错误是使用犰狳的 cor
函数给出的。当我像第一个 class 那样使用 rowvec 或 cx_rowvec 时,一切都完美无缺。调试我注意到,当我用 cor
取消注释行代码时,我得到了错误。有人能帮我吗?我安装了最后一个犰狳版本7.600.2。
现在我尝试使用不同的 Armadillo 库函数:听起来我没有其中的一些函数。例如使用以下函数 mean(X),var(X),stddev(X)
我没有任何问题,它编译完美。相反,当我尝试使用像 cov(X), cor(X)
这样的其他函数时,我得到了那个错误。我想我的图书馆里没有那个功能。所以为了解决这个问题,我试图安全地删除旧库并安装一个新库。不幸的是,错误仍然存在。我希望这次更新会有所帮助。我不认为我在我的 makefile 中犯了一些错误,因为当我在我的代码中使用一些特定的函数时它编译得不好。
谢谢大家!
我解决了在 armadillo_bits/config.hpp 中评论以下行:
#define ARMA_USE_LAPACK
和#define ARMA_USE_BLAS
。
即使可行,也是错误的解决方案。此处的链接部分描述了更好的解决方案 http://arma.sourceforge.net/faq.html#linking。
我在尝试编译 Armadillo 时遇到以下错误:
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 进行编译,我已经尝试了此处找到的解决方案,但没有很好的结果。到目前为止,我的项目有不同的 classes 是用 makefile 编译的。其中两个使用犰狳:第一个没有显示任何问题。相反,这个新的 class 给我编译错误。我发现这里的错误是使用犰狳的 cor
函数给出的。当我像第一个 class 那样使用 rowvec 或 cx_rowvec 时,一切都完美无缺。调试我注意到,当我用 cor
取消注释行代码时,我得到了错误。有人能帮我吗?我安装了最后一个犰狳版本7.600.2。
现在我尝试使用不同的 Armadillo 库函数:听起来我没有其中的一些函数。例如使用以下函数 mean(X),var(X),stddev(X)
我没有任何问题,它编译完美。相反,当我尝试使用像 cov(X), cor(X)
这样的其他函数时,我得到了那个错误。我想我的图书馆里没有那个功能。所以为了解决这个问题,我试图安全地删除旧库并安装一个新库。不幸的是,错误仍然存在。我希望这次更新会有所帮助。我不认为我在我的 makefile 中犯了一些错误,因为当我在我的代码中使用一些特定的函数时它编译得不好。
谢谢大家!
我解决了在 armadillo_bits/config.hpp 中评论以下行:
#define ARMA_USE_LAPACK
和#define ARMA_USE_BLAS
。
即使可行,也是错误的解决方案。此处的链接部分描述了更好的解决方案 http://arma.sourceforge.net/faq.html#linking。