当前位置: 首页 > news >正文

Ubuntu下gcc多版本管理

Ubuntu下多gcc版本的管理

开发过程中,在编译一个开源项目时,由于代码使用的c++版本过高,而系统内置的gcc版本过低时,这个时候我们就需要升级gcc版本,但是为了避免兼容性问题,安装多个版本的gcc,然后可以按需切换是个不错的解决方案。
gcc logo

查看gcc版本

$ gcc -v$ g++ -v

笔者的gcc版本还是5,这个是Ubuntu16自带的,那么如果下载的源码使用了c++17的API,那么可能就会遇到编译问题,比如笔者遇到的问题

filesystem: No such file or directory#include <filesystem>^
compilation terminated.
ninja: build stopped: subcommand failed.Source file was:#include <filesystem>int main(void){return std::filesystem::is_regular_file("/") ? 0 : 1;}Performing C++ SOURCE FILE Test std_filesystem_with_libfs failed

filesystem是c++17新增的,使用g++5当然无法编译通过。那么是时候升级gcc/g++版本了。

查看可用的gcc版本,这个是官方release的地址
http://ftp.gnu.org/gnu/gcc/

安装新版本gcc

1.添加软件源

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

2.更新源

sudo apt-get update

3.安装gcc-9

sudo apt-get install gcc-9

这样安装的是9.xx版本最新的稳定版本,也可以安装指定版本,比如

sudo apt-get install gcc-9.5.0

4.查看已安装gcc版本
locate是Ubuntu自建文件数据库,比直接搜索文件快的多,但是locate每天更新一次,实时性没那么好

sudo updatedb && sudo ldconfig
locate gcc | grep -E "/usr/bin/gcc-[0-9]"

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PixAhmSw-1677228525467)(null)]
5.切换gcc版本
使用update-alternatives命令切换

# 命令最后的 20和50是优先级,如果使用auto选择模式,系统将默认使用优先级高的
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50

更改不同版本gcc优先级时,会自动将高优先级版本作为当前使用的版本。
gcc版本切换

同理:对g++多版本管理也是同样的操作。


欢迎关注我的公众号“虎哥Lovedroid”,原创技术文章第一时间推送。

http://www.lryc.cn/news/18698.html

相关文章:

  • 吃透8图1模板,人人可以做架构
  • 骨传导耳机推荐哪款好,列举几款是市面上热销的骨传导耳机
  • CFS三层内网渗透
  • SQL server设置用户只能访问特定数据库、访问特定表或视图
  • linux:http服务器搭建及实验案例
  • 【无标题】智能工业安全用电监测与智慧能源解决方案
  • 前端白屏的检测方案,让你知道自己的页面白了
  • 编译原理【文法设计】—每个a后面至少一个b、ab个数相等,ab个数不相等的所有串
  • 【死磕数据库专栏启动】在CentOS7中安装 MySQL5.7版本实战
  • 23.2.23 22湖北省赛 B
  • ONLYOFFICE中的chatGPT 是如何编写毕业论文以及翻译多种语言的
  • QT入门Containers之QStackedWidget
  • Java学习-IO流-字节缓冲流
  • C++这么难,为什么我们还要学习C++?
  • C#底层库--业务单据号生成器(定义规则、自动编号、流水号)
  • vue3项目练习大全(附github源码)
  • SWMM从入门到实践教程 01 SWMM软件介绍
  • CSS中的text-overflow属性详解 (控制文字在一行显示,超出部分加省略号)
  • 基于pytorch实现模型剪枝
  • 写出高质量的前端代码之消除代码中的重复
  • 怎么从零开始学黑客,黑客零基础怎么自学
  • 量化择时——资金流择时策略(第1部分—因子测算)
  • Openwrt中动态IPV6 防火墙的正确设置方法
  • JS的基本数据类型和引用数据类型
  • mars3d基础项⽬常⻅报错
  • 【阿旭机器学习实战】【35】员工离职率预测---决策树与随机森林预测
  • Python学习-----模块4.0(json字符串与json模块)
  • open3d最大平面检测,平面分割
  • 【C++】4.类和对象(下)
  • 自动驾驶仿真:ECU TEST 、VTD、VERISTAND连接配置