背景
相比于Intel Math Kernel Library(Intel MKL)库,armadillo线性代数库更容易安装和配置,使用逻辑也跟更接近matlab,因此更容易上手、更适合刚接触科学计算的初学者。
本文旨在介绍在ubuntu系统中安装armadillo库(基于cmake)。
下载安装包
进入armadillo库官网(从window或ubuntu系统中进入都行)下载最新版的安装包,官网先不要关闭,后面要安装依赖库:
【官网】Armadillo: C++ library for linear algebra & scientific computing (sourceforge.net)
安装依赖库
(1)在官网上找到需要提前安装的依赖库,需要先通过指令安装依赖库,再通过cmake编译并安装armadillo:
(2)按“ctrl+alt+t”打开终端,输入sudo apt install libopenblas-dev liblapack-dev libarpack2-dev libsuperlu-dev,输入密码,按下enter键,提示出现后输入y,按下enter键:
正式安装
(1)在ubuntu系统中找到安装包(如果是在ubuntu系统中直接下载的,默认位置是/home/usrname/Downoads路径下),右键,点击解压("Extract Here"):
(2)打开解压出的文件夹,再右键“在终端中打开(open in terminal)”:
(3)在弹出的终端(terminal)中输入"cmake .",按下enter,注意cmake和点之间有个空格,如果系统上尚未安装cmake,先输入sudo apt install cmake进行安装:
(4)cmake编译成功后再在当前路径的终端(就是刚刚输入cmake .的这个终端)中输入sudo make install,按下enter,如果没有超级用户权限,直接make install也行:
(5)如下图所示,执行完毕后若没有报错,即表示安装成功。之前解压出的文件夹可以直接删除,不影响之后对armadillo库的使用。【注】那个文件夹中还包含了几个armadillo库的使用案例,如有需要也可保留。
本人的某台电脑在安装armadillo之前先安装了Intel MKL库,然后在执行上述sudo make install过程中报错:“/usr/bin/ld: cannot find -lmkl_rt: No such file or directory”,这时需要将缺失的跟mkl有关的库文件拷贝到/lib/x86_64-linux-gnu文件夹下。
cd /opt/intel/oneapi/mkl/2023.2.0/lib/intel64
#打开oneapi的安装文件夹,intel64中是64位操作系统的相关文件
#默认的安装位置是在/opt文件夹下,非默认位置安装需执行:
#cd {yourPath}/intel/oneapi/mkl/2023.2.0/lib/intel64
sudo cp -l ./libmkl_rt.so /lib/x86_64-linux-gnu
sudo cp -l ./libmkl_rt.so.2 /lib/x86_64-linux-gnu
#注意上面两行代码在so和so.2后面都有一个空格
做完上述更改后,回到解压出的文件夹下,先删除已经产生的CmakeCache.txt文件(如有),再"cmake ."(cmake+空格+点),再"sudo make install".
安装成功后的测试
(1) 随便找一个路径(比如在桌面上右键再点“open in terminal”)创建一个test.cpp:
(2)打开test.cpp并写入测试代码(生成一个3*5的随机数矩阵并打印到显示器上)。在test.cpp路径下在终端中输入vim test.cpp打开。打开后按i键进入输入模式,编写完毕后按esc键、再输入: ,再输入wq!进行保存并退出(w: write; q: quit; !: 强制执行)。
(3)通过"-larmadillo"将源文件(.cpp文件)链接到armadillo库文件并进行编译(g++ test.cpp -o [输出的可执行文件的名称] -larmadillo),生成可执行文件之后进行执行:文章来源:https://www.toymoban.com/news/detail-767062.html
(4)验证性测试通过!文章来源地址https://www.toymoban.com/news/detail-767062.html
到了这里,关于ubuntu(linux)环境下安装armadillo线性代数库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!