已经安装ros后,不能参照这个博客 Ubuntu更新cmake版本使用指令
sudo apt-get update
sudo apt-get remove cmake
sudo apt-get install cmake
cmake --version
这是因为ros安装后,有许多依赖cmake程序,因此不能直接删除原有cmake 文件,应该参照Cmake升级 更新 Ubuntu16.04 + ROS文章操作。
- 首先去官网cmake下载官网下载所需版本。
下载后解压文件
tar -xvzf cmake-3.22.1.tar.gz
- 进入解压后的文件目录,执行指令:
chmod 777 ./configure
./configure
配置成功之后显示:CMake has bootstrapped. Now run make.
- 执行指令,make 后可以跟j8(该参数与自己电脑有关,查询自己电脑有几个核指令为:“ grep ‘processor’ /proc/cpuinfo | sort -u | wc -l” ),用多核加速可以提高编译速度。
make
- 运行安装指令
sudo make install
- 查看当前版本是否安装成功,当前版本的安装路径为
/usr/local/bin/cmake
,因此查看当前安装位置的cmake 版本指令为
/usr/local/bin/cmake --version
结果显示为
--version
cmake version 3.27.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
- 最后使用新安装的cmake替换旧版本,其中
/usr/local/bin/cmake
为新安装的cmake目录。
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/bin/cmake 40
备注: Linux 多版本软件管理工具update-alternatives使用介绍介绍了update-alternatives
指令用法,数字越大,优先级越高
示例代码ubuntu: update-alternatives配置:
update-alternatives --install <link> <name> <path> <priority> [--force]
# 注册python2.7
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
# 注册python3
update-alternatives --install /usr/bin/python python /usr/local/bin/python3 3
第一个参数–install表示向update-alternatives注册服务名。
第二个参数是注册最终地址,成功后将会把命令在这个固定的目的地址做真实命令的软链,以后管理就是管理这个软链;
第三个参数:服务名,以后管理时以它为关联依据。
第四个参数,被管理的命令绝对路径。
第五个参数,优先级,数字越大优先级越高。
sudo update-alternatives --install /usr/bin/cmake cmake /usr/local/cmake/bin/cmake 50
# /usr/bin/cmake 为链接的名字
# cmake 指定在 alternatives 文件夹下的名字
# path 为实际文件路径
# priority 给当前的实际文件指定一个值,值越大,权限越高
# 切换版本,以 cmake 为例
update-alternatives --config cmake
# 查看已有的 alternatives 配置
update-alternatives --list cmake
# or,
update-alternatives --display cmake
- 测试cmake版本:实际本人修改后并没有成功,采用了简单粗暴的方法,在cmake切换版本使用时,直接加上路径,使用指定路径的cmake。确实可以用,想用默认版本就不加cmake路径。
sudo /usr/local/bin/cmake
。
如:
sudo /usr/local/bin/cmake -D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -D CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 -D OPENCV_EXTRA_MODULES_PATH=/home/xiujie/SLAM_Lib/opencv-3.4.16/opencv_contrib-3.4.16/modules/ -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_ENABLE_NONFREE=True ..
cmake --version
# cmake version 3.22.1
# CMake suite maintained and supported by Kitware (kitware.com/cmake).
- 实际上,根据链接ubuntu16.04升级cmake版本,可任意切换版本
可以通过修改软连接来使用不同的cmake版本,本人试了没用。