ubuntu 16.04 安装多个gcc版本
ubuntu 16.04 安装多个gcc版本
1.背景
由于我们软件开发时,通常在ubuntu16.04系统中运行,而ubuntu16.04 中系统自带的gcc版本为5.4.
ubuntu16.04 从2016年发布以来,就实验性的支持了c++17的部分功能,所以我们的工程中也部分的使用了c++17的功能。
最近,在windows上使用msvc写了一部分代码,在与linux版本合并的时候,出现很多编译错误,才来了解gcc对c++17的支持情况
gcc 5,部分的,实验性的支持了c++17的语法
gcc 7, 在语法层面,完整的兼容了c++17标准
gcc 9, c++17 ABI层面完整的兼容(意味着可以安全的交叉编译)
考虑到ubuntu16已经于2021年结束标准支持,2026年将结束生命周期,以及使用更多的c++17的特性
我决定在我的开发环境安装多个gcc版本,踩一下升级gcc坑,
先设定一个小目标:安装可以在gcc 5 和gcc7之间来回切换的开发环境
2.升级之前
备份虚拟机环境 ,基操
3. 升级
我们主要通过build-essential
这个基础设施来 安装,管理 gcc , 所以首先安装它
sudo apt install build-essential
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install g++-7 -y
下面三个镜像任选一个
#清华
sudo sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu\//g' /etc/apt/sources.list
#阿里云
sudo sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.aliyun.com\/ubuntu\//g' /etc/apt/sources.list
#华为云
sudo sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//https:\/\/mirrors.huaweicloud.com\/ubuntu\//g' /etc/apt/sources.list
安装gcc版本
sudo apt -y install gcc-5 g++-5 gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 5
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 7
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 7
配置gcc版本
/etc/apt$ sudo update-alternatives --config gcc
按2再按回车就会切换到gcc7
deepvision@sw-008:/etc/apt$ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/gcc-7 7 auto mode
* 1 /usr/bin/gcc-5 5 manual mode
2 /usr/bin/gcc-7 7 manual mode
Press <enter> to keep the current choice[*], or type selection number:
可以打印出版本来看是否切换成功
gcc --version
g++ --version
end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2019-08-24 使用procedump捕获未处理异常的dump