又一次感叹自己的愚蠢
为什么要设置多个版本
毫无疑问,在面对各种软件的时候,每种软件因为版本或者本质算法的需要,都会对gcc,g++这类编译器有不同的需求,而我们总不能用一个下一个,所以电脑里保存多个版本,只用调整各自的优先级,随时切换就好
修改程序包版本的方式
网上的主流方式无非就两种
- 修改软连接
- 首先需要查看现有的gcc和g++版本:
#查询现在的默认版本
gcc -v
g++ -v
#查询电脑所存的所有版本
ls /usr/bin/gcc* -l
ls /usr/bin/g++* -l
结果如下:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.5.0-12ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1)
lrwxrwxrwx 1 root root 14 6月 13 22:58 /usr/bin/gcc -> /usr/bin/gcc-5
-rwxr-xr-x 1 root root 838008 4月 14 2016 /usr/bin/gcc-4.9
-rwxr-xr-x 1 root root 907648 4月 12 2018 /usr/bin/gcc-5
lrwxrwxrwx 1 root root 22 11月 12 2018 /usr/bin/gcc-6 -> x86_64-linux-gnu-gcc-6
- 现在所需要的版本
sudo apt-get install gcc-版本号
sudo apt-get install g++-版本号
- 然后消除现有的软连接
cd /usr/bin
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
- 最后设定新的软连接
sudo ln -s gcc-6 gcc
sudo ln -s g++-6 g++
#查询是否修改成功
gcc -v
g++ -v
- 设置优先级
开始的步骤都是一样的,查询默认版本以及电脑所存在版本。
然后设置权重
将版本4.8加入候选中
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 100
将版本7加入候选中
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 50
最后的数字是权重,系统会默认选择权重最大的版本。
输入
sudo update-alternatives --config gcc
之后可以输入数字自行选择:
问题所在
可是经有这两种方式之后,我的gcc和g++的版本并未得到改变,后来细察发现,系统默认的路径不是usr/bin
解决方式
vim ~/.bashrc #打开配置文件
export PATH="/usr/bin:$PATH" #加入字段
source ~./.bashrc #执行配置文件