您好,我按照 README.txt 的说明将 Armadillo3.0.1 安装在我自己的工作目录 /home/me/package/armadillo3.0.1/ 中。但是当我尝试一个例子时:
g++ -I /home/me/package/armadillo3.0.1/usr/include/ example.cpp -o 示例 -O1
它总是显示错误:
/tmp/ccZAE9pj.o:功能中void arma::gemm<false, false, false, false>::apply_blas_type<double>(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double)':
example.cpp:(.text._ZN4arma4gemmILb0ELb0ELb0ELb0EE15apply_blas_typeIdEEvRNS_3MatIT_EERKS5_S8_S4_S4_[void arma::gemm<false, false, false, false>::apply_blas_type<double>(arma::Mat<double>&, arma::Mat<double> const&, arma::Mat<double> const&, double, double)]+0x75e): undefined reference to
包装_dgemm_'
/tmp/ccZAE9pj.o:功能中void arma::glue_times_redirect2_helper<true>::apply<arma::Mat<double>, arma::Mat<double> >(arma::Mat<arma::Mat<double>::elem_type>&, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> const&)':
example.cpp:(.text._ZN4arma27glue_times_redirect2_helperILb1EE5applyINS_3MatIdEES4_EEvRNS3_INT_9elem_typeEEERKNS_4GlueIS5_T0_NS_10glue_timesEEE[void arma::glue_times_redirect2_helper<true>::apply<arma::Mat<double>, arma::Mat<double> >(arma::Mat<arma::Mat<double>::elem_type>&, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> const&)]+0xe69): undefined reference to
包装_dgemv_'
example.cpp:(.text._ZN4arma27glue_times_redirect2_helperILb1EE5applyINS_3MatIdEES4_EEvRNS3_INT_9elem_typeEEERKNS_4GlueIS5_T0_NS_10glue_timesEEE[void arma::glue_times_redirect2_helper::apply, arma::Mat >(arma::Mat ::elem_type>&,arma::Glue,arma::Mat,arma::glue_times> const&)]+0x1175): 对 `wrapper_dgemv_' 的未定义引用
Collect2: ld 返回 1 退出状态
但是,如果我添加 -larmadillo 选项,例如:
g++ example.cpp -o 示例 -O1 -larmadillo
它通过调用旧版本来工作。如果我想使用 3.0.1 中的新功能(例如 Mat.t()),它也会显示错误:
example.cpp:在函数‘int main(int, char**)’中:
example.cpp:20: 错误:‘struct arma::mat’ 没有名为‘t’的成员
这表明通过添加-larmadillo,它从/usr/include/armadillo_bits/调用旧版本的armadillo。
有什么想法吗?谢谢。