ubuntu 20.04 安装与切换多个版本cmake,安装多个版本gcc

2023-12-13 11:41:26

1.安装多版本cmake

1)查看当前系统自带cmake版本及安装位置:

~$: cmake --version

如:

cmake version 3.16.3

~$: which cmake

如:

/opt/cmake/cmake-3.16.3

2)下载对应的cmake,如:

https://cmake.org/files/v3.10/cmake-3.10.0-Linux-x86_64.tar.gz

将新下载的cmake安装到/opt/cmake/cmake-3.10.0

3)制作一个脚本 :cmake_change, 用于切换cmake不同版本

#!/bin/bash

keys="/opt/cmake/cmake-"
cmake1='/opt/cmake/cmake-3.10.0/bin/'
cmake2='/opt/cmake/cmake-3.16.3/bin/'
cmake_version="$1"

OLD_IFS="$IFS" # 保存系统默认的分隔符
IFS=":" # 将分隔符设置为冒号,为了下面取出环境变量里面每个路径
path_array=($PATH) # 将环境变量变成数组,以上面设置的冒号分隔符为界限
IFS="$OLD_IFS" # 恢复默认的系统分隔符
export PATH="" # 清空当前shell的环境变量
for p in ${path_array[@]}
do
        if [[ $p =~ $keys ]]
        then
                continue # 如果旧的环境变量里面还有了某个cmake版本,则直接跳过,先不加入环境变量
        fi
        export PATH=${PATH}:${p} # 将之前的环境变量的路径挨个加入现在的环境变量里面
done

if [[ $cmake1 =~ $cmake_version ]] # 将脚本传入的指定版本的cmake路径加入新的环境变量里面
then
        export PATH=${PATH}:${cmake1}
else
        export PATH=${PATH}:${cmake2}
fi

echo "change cmake version to ${cmake_version}"

注意给此脚本付可执行属性。

4) 在 ~/.bashrc 文件添加两行:

alias cmake3_10_0='source ~/cmake_change 3.10.0/bin'
alias cmake3_16_3='source ~/cmake_change 3.16.3/bin'

5)执行切换:

~$:cmake3_16_3

~$:cmake3_10_0

用 cmake --verision验证。

参考:linux下如何方便的切换cmake版本_cmake版本切换-CSDN博客

2. 安装与切换多版本gcc或g++

1) 查看当前已安装的gcc

~/$ ls /usr/bin/gcc*

2)安装对应的版本

apt-get install gcc-7

3)多版本切换设置

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 90 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9

4)版本切换

#切换gcc版本
update-alternatives --config gcc
?

5) 删除某个gcc版本的选项的话,可以使用

sudo update-alternatives --remove gcc /usr/bin/gcc-7.5

再使用apt-remove删除即可

————————————————
参考:安装多版本的gcc_g++编译器_ubuntu安装多版本gcc-CSDN博客
参考:ubantu20 安装多个版本的gcc/gc++编译器-CSDN博客

文章来源:https://blog.csdn.net/wchengshen/article/details/134965821
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。