首先下载armadillo:http://arma.sourceforge.net/download.html,我下载的是armadillo-8.400.0.tar.xz,将其解压:
tar xf armadillo-8.400.0.tar.xz
得到armadillo-8.400.0目录,按readme.txt说明安装,执行如下命令:
cd armadillo-8.400.0
.make
make
sudo make install
然后到examples目录,make编译example1,运行看是否正常
cd examples
make
./example1
正常会打印一些矩阵,但也有报错
error: det(): use of ATLAS or LAPACK needs to be enabled
我们查看CMakeCache.txt发现一些类似如下的NOTFOUND提示:
ARPACK_LIBRARY:FILEPATH=ARPACK_LIBRARY-NOTFOUND
如果需要ATLAS、LAPACK等则需要安装,我们到 https://pkgs.org 寻找相关的安装包,这个网站提供各种系统的安装包,搜索下载即可。我下载了如下包,注意一定要下载对应系统版本的,我下载的Centos7的。后三个包要依序安装。
后来编译程序遇到错误:undefined reference to `clapack_dgetrf',未定位具体原因。到正常部署的机器的/usr/lib64下查看so文件的中的函数定义(命令:nm -Do *.so | grep dgetrf),发现没有clapack_dgetrf的定义,但发现openblas有好多dgetrf相关的函数,不管了,把openblas相关包安装上再说。接着安装了openblas相关包,问题解决。
安装命令:
sudo rpm -ivh blas-devel-3.4.2-8.e17.x86_64.rpm
这些包安装完成后,再重新进入armadillo-8.400.0,删除CMakeCache.txt,重新安装一遍,并重新编译运行example1,应该没有问题了。