ubuntu 多个版本gcc共存方法

本文介绍了在Ubuntu系统中如何实现多个GCC版本的共存与切换。通过备份原始链接并创建新的符号链接,可以轻松地在不同版本间进行选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ubuntu编译android源码时候有时候会遇见莫名其妙问题,这些很有可能是由于gcc版本原因导致的,如何在ubuntu下使多个版本gcc共存与切换

ubuntu下编译程序时一般用的都是gcc,gcc是GNU专属C/C++编译器,因为gcc存在着兼容性的问题,因此可能部分程序必须用指定版本的gcc才能编译通过,因此手工切换gcc版本就很有意义了。


环境

os:ubuntu 13.04
gcc:4.4/4.7

1.简述
一般情况下,编译程序都是使用的

/usr/bin/gcc

其实这个/usr/bin/gcc只是个符号链接,它指向了/usr/bin/gcc-xx,可以用ls命令查看

simon@simon-y450-1-0:~$ ls /usr/bin/gcc -l
lrwxrwxrwx 1 root root 7  7月  9 17:24 /usr/bin/gcc -> gcc-4.4

看一下gcc/cc的当前版本

simon@simon-y450-1-0:~$ gcc --version
gcc (Ubuntu/Linaro 4.4.7-2ubuntu2) 4.4.7

看一下当前安装的gcc的各个版本
simon@simon-y450-1-0:~$ ls /usr/bin/gcc* -l
lrwxrwxrwx 1 root root      7  7月  9 17:24 /usr/bin/gcc -> gcc-4.4
-rwxr-xr-x 1 root root 255168  1月 31 03:57 /usr/bin/gcc-4.4
-rwxr-xr-x 1 root root 578840  4月 15 20:15 /usr/bin/gcc-4.7
-rwxr-xr-x 1 root root  22848  4月 15 20:15 /usr/bin/gcc-ar-4.7
lrwxrwxrwx 1 root root      7  4月 22 15:44 /usr/bin/gcc.back -> gcc-4.7
-rwxr-xr-x 1 root root  22848  4月 15 20:15 /usr/bin/gcc-nm-4.7
-rwxr-xr-x 1 root root  22848  4月 15 20:15 /usr/bin/gcc-ranlib-4.7

ok,可以看到gcc-4.4和gcc-4.7已经安装了,只要把符号链接指向gcc-4.4或者4.7就可以了,我们用update-alternatives工具来改变符号链接。也可以使用ln改变链接。update-alternatives工具使用方法之后再介绍,这回就直接使用ln来改变链接

2.备份原始gcc链接
执行如下命令
simon@simon-y450-1-0:~$ sudo mv /usr/bin/gcc /usr/bin/gcc.back.4.4

3.建立新链接

simon@simon-y450-1-0:~$ sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

相同g++也同样用法切换版本。


下回介绍使用update-alternatives工具切换

### 如何在 Ubuntu 上卸载指定版本GCCUbuntu 中,可以通过包管理工具 `apt` 或者手动删除的方式来卸载特定版本GCC 编译器。以下是具体方法: #### 使用 APT 卸载特定版本GCC 如果通过 `apt` 安装了某个版本GCC,则可以按照以下方式卸载该版本。 1. **确认已安装的 GCC 版本** 首先查看当前系统中已经安装的所有 GCC 版本: ```bash dpkg --list | grep gcc ``` 这将列出所有与 GCC 相关的软件包及其版本号[^1]。 2. **卸载特定版本GCC** 假设要卸载的是 GCC 9.3.0,那么对应的命令如下: ```bash sudo apt-get remove --purge gcc-9 g++-9 ``` 此处的 `gcc-9` 和 `g++-9` 是指代 GCC 的第 9 版本以及其 C++ 支持部分。可以根据实际需求替换为其他版本编号。 3. **清理残留文件** 如果希望彻底清除配置文件和其他可能遗留的内容,执行以下操作: ```bash sudo apt-get autoremove ``` #### 手动移除编译源码安装的 GCC 对于那些不是通过包管理器而是从源代码编译并安装到系统的 GCC 版本,需要采取不同的策略来移除它。 1. **定位安装路径** 查找 GCC 是否被放置在一个非标准目录下(比如 `/usr/local/bin/gcc-X.Y.Z`),这通常意味着它是手工构建出来的而不是由官方仓库提供。 2. **删除二进制及相关文件** 删除对应于目标版本的所有可执行程序和库链接: ```bash rm /usr/local/bin/gcc-X.Y.Z rm /usr/local/lib/gcc/X.Y.Z/* ``` 替换其中 X.Y.Z 表示具体的版本号码[^2]。 3. **更新环境变量 (如有必要)** 若之前修改过 `.bashrc` 或类似的 shell 初始化脚本来指向新版本GCC,请记得恢复这些更改以便不影响默认行为。 #### 注意事项 当多个不同版本共存时需谨慎处理;某些依赖关系可能会受到影响从而引发连锁反应。因此建议仅保留必要的几个常用版次即可满足开发工作所需[^3]。 ```bash sudo update-alternatives --config gcc ``` 上述指令可以帮助切换活动中的主要使用的 GCC 变体而无需完全抹去其它选项存在状态下的可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值