Ubuntu18.04 设置多版本gcc、g++时所遇到的坑(无法修改版本)

为什么要设置多个版本

毫无疑问,在面对各种软件的时候,每种软件因为版本或者本质算法的需要,都会对gccg++这类编译器有不同的需求,而我们总不能用一个下一个,所以电脑里保存多个版本,只用调整各自的优先级,随时切换就好

修改程序包版本的方式

网上的主流方式无非就两种

  1. 修改软连接
  • 首先需要查看现有的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 613 22:58 /usr/bin/gcc -> /usr/bin/gcc-5
-rwxr-xr-x 1 root root 838008 414  2016 /usr/bin/gcc-4.9
-rwxr-xr-x 1 root root 907648 412  2018 /usr/bin/gcc-5
lrwxrwxrwx 1 root root     22 1112  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
  1. 设置优先级
    开始的步骤都是一样的,查询默认版本以及电脑所存在版本。
    然后设置权重
	将版本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 #执行配置文件
  • 11
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值