Ubuntu 20.04安装CMake 3.1
- 推荐使用方法二,直接下载二进制文件,源码编译报错make报错error:static assertion failed comparison object must be invocable as const,另外报错没有libidn.so.11可以创建libidn.so.12的软链接(方法在后面)
在Ubuntu 20.04上安装 CMake 3.1
的过程可以通过以下几种方法进行。不过请注意,Ubuntu 20.04 自带的官方源中可能提供较新版本的 CMake,因此如果你有特定需求想要安装 CMake 3.1
,可能需要通过手动下载和安装旧版本的方式来实现。
方法 1:手动安装 CMake 3.1(从源码编译)
-
卸载当前 CMake(如果已安装):
如果你已经安装了较新的 CMake 版本,可以先卸载:sudo apt remove cmake
-
下载 CMake 3.1 的源码:
你可以通过以下命令从官方 CMake 网站下载版本 3.1 的源码压缩包:wget https://cmake.org/files/v3.1/cmake-3.1.0.tar.gz
-
解压并进入目录:
tar -xvf cmake-3.1.0.tar.gz cd cmake-3.1.0
-
编译和安装:
首先配置编译,然后编译 CMake。
./bootstrap make -j$(nproc) # 使用多核编译 sudo make install
编译过程可能需要一些时间,具体取决于你的系统性能。
-
验证安装:
你可以通过以下命令验证 CMake 版本是否安装成功:
cmake --version
你应该看到类似
3.1.0
的输出。
方法 2:使用旧版本的二进制文件
如果你不想从源码编译,也可以直接下载已经编译好的 CMake 3.1 二进制文件。
-
下载 CMake 3.1 的二进制文件:
可以从官方 CMake 网站下载预编译好的 Linux 版本。wget https://cmake.org/files/v3.1/cmake-3.1.0-Linux-x86_64.tar.gz
-
解压并安装:
tar -xvf cmake-3.1.0-Linux-x86_64.tar.gz sudo mv cmake-3.1.0-Linux-x86_64 /opt/cmake-3.1
-
更新系统的
PATH
以使用 CMake 3.1:将 CMake 的路径添加到你的
PATH
环境变量中:echo 'export PATH=/opt/cmake-3.1/bin:$PATH' >> ~/.bashrc source ~/.bashrc
-
验证安装:
检查 CMake 版本是否正确:
cmake --version
方法 3:通过 snap
安装更新版本(不适用于 CMake 3.1)
如果你不需要特定的 CMake 3.1
版本,可以使用 Snap 安装较新版本的 CMake。
sudo snap install cmake --classic
总结
- 推荐 手动安装 CMake 3.1,最常见的方式是通过源码编译或下载官方的二进制文件。
- 如果你不需要特定的 CMake 版本,并且对较新的版本没有限制,可以直接通过
apt
或snap
安装最新的 CMake 版本。
如果你有任何进一步的问题,或者安装过程中遇到困难,请告诉我!
libidn.so.11: cannot open shared object file
错误表明系统在运行某个程序时,无法找到名为 libidn.so.11
的共享库。这通常是因为所需的 libidn
库版本未安装,或者安装的位置不在系统的动态库查找路径中。
以下是几种解决该问题的方案:
1. 安装 libidn11
libidn.so.11
是由 libidn11
提供的库,可以通过包管理器安装此库。
在 Ubuntu 20.04 及其衍生版本上,运行以下命令以安装 libidn11
:
sudo apt update
sudo apt install libidn11
安装完成后,重新运行程序检查是否解决问题。
2. 检查库文件路径
如果你已经安装了 libidn11
,但仍然收到此错误,可能是系统没有正确找到库文件。
1. 确认库是否已安装
你可以使用 dpkg
或 find
命令来检查系统中是否已经存在该库:
dpkg -L libidn11 | grep libidn.so
或
find /usr -name "libidn.so.11"
正常情况下,库文件应位于 /usr/lib/x86_64-linux-gnu/
目录或类似位置。
2. 如果库存在但未被加载
如果库已经存在但程序仍然无法找到,可能是库路径没有添加到系统的动态链接库路径中。
你可以尝试以下操作:
- 将库路径添加到
/etc/ld.so.conf.d/
文件夹中。
编辑 /etc/ld.so.conf.d/libidn.conf
(如果该文件不存在则创建),在文件中添加库的路径,例如:
/usr/lib/x86_64-linux-gnu
然后运行以下命令以更新动态链接库的缓存:
sudo ldconfig
3. 手动安装 libidn.so.11
如果系统仓库中无法找到 libidn11
,或者你需要特定版本的 libidn.so.11
,可以手动下载并安装。
1. 下载 libidn11
的 .deb
包
从 Ubuntu Packages 网站找到 libidn11
包。你可以根据系统的架构下载相应的 .deb
文件(通常为 amd64
或 i386
)。
2. 安装 .deb
包
下载完成后,运行以下命令安装:
sudo dpkg -i libidn11_*.deb
3. 验证安装
运行以下命令来验证库是否已经安装并能被正确加载:
ldconfig -p | grep libidn.so.11
如果你看到输出,说明库已经正确安装。
4. 使用软链接解决
有时,软件可能要求 libidn.so.11
,而系统中只有较新的版本(例如 libidn.so.12
)。如果你确信可以兼容较新版本的库,手动创建一个指向现有库的符号链接可能会解决问题。
首先,查找系统中是否有其他版本的 libidn
:
find /usr -name "libidn.so*"
假设系统中有 libidn.so.12
,你可以创建符号链接:
sudo ln -s /usr/lib/x86_64-linux-gnu/libidn.so.12 /usr/lib/x86_64-linux-gnu/libidn.so.11
注意:创建符号链接虽然可以暂时解决问题,但最好确保程序与正确的库版本兼容,避免潜在的兼容性问题。
总结
libidn.so.11
错误通常是由于系统中缺少该库或无法找到该库路径。你可以通过以下方法解决:
- 安装
libidn11
。 - 检查并更新库的路径。
- 手动安装缺少的库文件。
- 使用符号链接解决兼容问题。
通过这些步骤,应该可以解决 libidn.so.11
相关的错误。如果问题仍然存在,请告诉我更多细节,我将帮助进一步排查。