Ubuntu18.04系统gcc多版本共存与切换


原因:为了和CUDA版本相适应,需要同时安装gcc4.8和gcc7
附: Tensorflow-GPU、CUDA、GCC版本对应关系

!- 符号约定 -!

:~$   	# 代表输入命令
>> 		# 代表输出结果

1. 查看系统gcc版本

:~$ gcc -v
>> #忽略看最后一行
>> gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) # 最后一行显示当前gcc版本为7.5.0

2. 查看当前已有的 gcc 版本

:~$ ls /usr/bin/gcc*
>>
/usr/bin/gcc      /usr/bin/gcc-ar      /usr/bin/gcc-nm      /usr/bin/gcc-ranlib
/usr/bin/gcc-4.8  /usr/bin/gcc-ar-4.8  /usr/bin/gcc-nm-4.8  /usr/bin/gcc-ranlib-4.8
/usr/bin/gcc-7    /usr/bin/gcc-ar-7    /usr/bin/gcc-nm-7    /usr/bin/gcc-ranlib-7

将上边的查询结果放到文本编辑器中查看,可知系统同时存在gcc4.8,gcc7。(第一行为快捷方式)
第一行为快捷方式

3. 安装需要的gcc版本

(因为我系统中已存在gcc4.8,这步跳过)

:~$ sudo apt-get install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib

4. 在版本管理中为各版本gcc注册快捷方式

最后的70,40是其注册的优先级,数字越大优先级越高,系统默认采用高优先级。

:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40

5. 进行版本切换

:~$ sudo update-alternatives --config gcc
>>
有 2 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

  选择       路径            优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-7     70        自动模式
  1            /usr/bin/gcc-4.8   40        手动模式
  2            /usr/bin/gcc-7     70        手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:1		# 这里根据需要选择
update-alternatives: 使用 /usr/bin/gcc-4.8 来在手动模式中提供 /usr/bin/gcc (gcc)

6. 查看是否切换完成

:~$ gcc -v
>> # 忽略前边看最后一行
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.5-4ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --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 4.8.5 (Ubuntu 4.8.5-4ubuntu8) # 最后一行显示当前gcc版本为4.8.5

附录

linux软件版本管理命令update-alternatives使用简介:

:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
:~$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40

1> --install : 向update-alternatives注册服务名。

2> /usr/bin/gcc : 注册后的快捷方式 (软连接)

3> gcc :服务名

4> /usr/bin/gcc-7 : 2中软连接指向的真实服务地址

5> 70 : 优先级,数字越大优先级越高

所以上述两条命令起得作用是,分别注册一个服务名为gcc(当系统启用这项服务时,会打开快捷方式(软连接))。其软连接指向服务的真实地址分别是/usr/bin/gcc-7和/usr/bin/gcc-4.8。这两条指向的优先级别为70和40。
后续管理的便是软连接的指向。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值