我已经下载了最新的Armadillo软件包(3.920),我正在尝试在我的机器上使用它(Ubuntu 12.04)。我按照readme.txt文件中提到的安装步骤(cmake。,make,sudo make install)。我有lapack和blas在我的系统上。当我尝试使用以下命令运行示例目录中提供的示例时:
g ++ example1.cpp -O2 -larmadillo
我收到错误:
/usr/lib/liblapack.so.3gf:对ATL_zptgemm'
/usr/lib/liblapack.so.3gf: undefined reference to
ATL_scopy'的未定义引用
等
如果我尝试运行该示例
g ++ example1.cpp -O2 -llpack -lblas -lgfortran
我收到错误:
/tmp/ccOsKhfg.o:在函数double arma::blas::dot<double>(unsigned int, double const*, double const*)':
example1.cpp:(.text._ZN4arma4blas3dotIdEET_jPKS2_S4_[double arma::blas::dot<double>(unsigned int, double const*, double const*)]+0x36): undefined reference to
wrapper_ddot_'中
/tmp/ccOsKhfg.o:在函数void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
example1.cpp:(.text._ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x53): undefined reference to
wrapper_dgemv_'中
/tmp/ccOsKhfg.o:在函数void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)':
example1.cpp:(.text._ZN4arma4blas4gemmIdEEvPKcS3_PKiS5_S5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x61): undefined reference to
wrapper_dgemm _'
请注意,如果我在config.hpp中注释'#define ARMA_USE_LAPACK','#define ARMA_USE_BLAS',我可以运行示例1但不需要示例2,因为它需要lapack。
你能指导我解决问题吗? 谢谢。 萨利尔
答案 0 :(得分:0)
看到你的问题,
我认为你应该输入-llapack而不是-llpack
没有-lgfortan它可以工作所以也尝试。
g ++ main.cpp -o main -o1 -larmadillo -llapack -lblas