【发布时间】:2020-10-20 19:53:45
【问题描述】:
我目前在装有 Ubuntu 20.04 的机器上安装了 Armadillo 9.900.4。我已经下载了 10.1.0 并运行了 cmake . 和 sudo make install,当我重新编译我的代码并运行它时,它说它是用 9.900.4 编译的。我做错了什么吗?有没有办法完全删除犰狳并重新安装?
谢谢
【问题讨论】:
我目前在装有 Ubuntu 20.04 的机器上安装了 Armadillo 9.900.4。我已经下载了 10.1.0 并运行了 cmake . 和 sudo make install,当我重新编译我的代码并运行它时,它说它是用 9.900.4 编译的。我做错了什么吗?有没有办法完全删除犰狳并重新安装?
谢谢
【问题讨论】:
这就是使用make install 安装某些东西的缺点。它绕过了你的发行包管理器,然后你必须手动清理/升级你已经安装的东西。 install make 目标的实际作用也取决于库的创建者。
一些库还创建了一个“卸载”目标以使卸载更容易。我不知道犰狳是否这样做,但您可以尝试从您编译的文件夹中运行make uninstall,然后运行make install 命令进行检查。
无论如何,Linux 都有安装库和头文件的标准目录。通常install make 目标所做的只是将适当的文件复制到这些文件夹中。然后您需要做的就是手动删除这些文件。尝试在 /usr/include 文件夹中查找标头,并在 /usr/lib 文件夹中查找已编译库(名称因发行版而异)。
如果找不到它们,您可以使用locate 程序。只需在 shell 中运行locate armadillo。不过,我不确定它是否已经安装在 ubuntu 中。
您也可以只将犰狳用作仅标头库,而无需在系统中“安装”它。在这种情况下,您需要将您的程序与 BLAS 实现以及 Lapack 链接起来。事实上,当你编译犰狳时,它所做的只是创建一个可以链接的“包装库”,并且已经链接了 BLAS 和 Lapack(大部分犰狳代码都是模板代码)。
TLDR;
在/usr/include(或类似的)中搜索犰狳读者并删除它们。在/usr/lib(或类似的)中搜索已编译的犰狳库并将其删除。
【讨论】: