专栏首页C++核心准则原文翻译在Ubuntu20.04环境中构建C++20开发环境(GCC11)

在Ubuntu20.04环境中构建C++20开发环境(GCC11)

本文介绍在最新的Ubuntu20.04环境中编译最新的GCC编译器的方法。使用这个环境可以学习C++20新特性。

安装Ubuntu20.04

从Ubuntu官网下载最新的安装包并安装。具体地址可以自己检索,也可以参照文末的链接。

安装编译环境

更新Ubuntu安装包信息:

$ sudo apt update

安装编译功能包

$ sudo apt install build-essential

安装开发文档

$ sudo apt-get install manpages-dev

确认gcc版本

$ gcc --version

作者的环境中显示gcc当前版本是9.3

安装Git

安装Git包

$ sudo apt install git

确认Git版本

$ git --version

作者的环境中显示如下:

下载GCC源代码

从gcc官网下载代码到src目录中。

git clone git://gcc.gnu.org/git/gcc.git src

开始下载......

这个过程会持续几个小时,慢慢等。

配置GCC编译环境

另外创建一个存放编译结果的目录,在这个目录中执行配置命令。首先准备mpc开发库:

apt-get install libmpc-dev

安装flex

$ sudo apt-get install flex

配置编译环境(64bit环境是需要使用--disable-multilibx)

$ ../src/configure --disable-multilib

编译GCC

$ make

再次等待...

安装GCC

$ sudo make install

GCC版本切换

使用如下命令增加gcc版本切换选项(例子中添加了gcc9和刚刚编译得到的gcc11)

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/x86_64-linux-gnu-gcc-9 90
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-pc-linux-gnu-gcc 100

确认gcc选项

$ sudo update-alternatives --config gcc

作者环境的输出如下:

可以通过回车键或数字键切换gcc版本。

确认切换结果

$ gcc -version

作者使用的环境输出如下:

大功告成!

参考资料:

Ubuntu官网:

https://ubuntu.com/

Ubuntu20.04下载链接:

https://releases.ubuntu.com/20.04/ubuntu-20.04-desktop-amd64.iso

安装编译环境:

https://linuxize.com/post/how-to-install-gcc-compiler-on-ubuntu-18-04/

安装Git:

https://linuxize.com/post/how-to-install-git-on-ubuntu-18-04/

GCC安装文档:

https://gcc.gnu.org/install/

获取源代码:

https://gcc.gnu.org/git.html

flex问题解决方法:

https://github.com/golang/go/issues/316

gmp/mpfr/mpc问题解决方法:

https://stackoverflow.com/questions/9253695/building-gcc-requires-gmp-4-2-mpfr-2-3-1-and-mpc-0-8-0


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Eclipse构建树莓派远程调试环境

    在Ubuntu主机端使用gdb-multiarch实现远程调试之后,接下来使用说明在Eclipse中实现远程调试的方法。

    面向对象思考
  • C++核心准则CP.3:尽量不要显式共享可写数据

    CP.3: Minimize explicit sharing of writable data

    面向对象思考
  • C++核心准则F.52:在lambda表达式中使用引用形式捕捉局部变量

    F.52 在lambda表达式中使用引用形式捕捉局部变量,包含向算法传递变量的情况。

    面向对象思考
  • Selenium Webdriver 3.X源码分析之核心代码common

    本文主要对Selenium3.X Python3端源码的webdriver核心的通用部分代码common目录进行分析说明,先看下common目录下的目录文件结构...

    苦叶子
  • 代码 | 自适应大邻域搜索系列之(2) - ALNS算法主逻辑结构解析

    在上一篇推文中,教大家利用了ALNS的lib库求解了一个TSP问题作为实例。不知道你萌把代码跑起来了没有。那么,今天咱们再接再厉。跑完代码以后,小编再给大家深入...

    短短的路走走停停
  • 代码 | 自适应大邻域搜索系列之(2) - ALNS算法主逻辑结构解析

    在上一篇推文中,教大家利用了ALNS的lib库求解了一个TSP问题作为实例。不知道你萌把代码跑起来了没有。

    用户1621951
  • Python中的尾递归

    尾递归的原理:当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。编译器可以做到这点,因为递归调用是当前活跃期内最后一条...

    明天依旧可好
  • ruby学习笔记(7)-闭包

    闭包的一个重要特征是:过程(方法)内部定义的变量,即使在方法调用完成以后,仍然可以继续引用到!(即延长了生命周期) def method(n) puts "n...

    菩提树下的杨过
  • 用gcc/g++编译运行C/C++程序

    青木
  • 新浪应用Dzx!Sae完美反向代理绑米教程

    用户1191760

扫码关注云+社区

领取腾讯云代金券