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

2020-05-29 14:57:24 浏览数 (1)

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

安装Ubuntu20.04

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

安装编译环境

更新Ubuntu安装包信息:

代码语言:javascript复制
$ sudo apt update

安装编译功能包

代码语言:javascript复制
$ sudo apt install build-essential

安装开发文档

代码语言:javascript复制
$ sudo apt-get install manpages-dev

确认gcc版本

代码语言:javascript复制
$ gcc --version

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

安装Git

安装Git包

代码语言:javascript复制
$ sudo apt install git

确认Git版本

代码语言:javascript复制
$ git --version

作者的环境中显示如下:

下载GCC源代码

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

代码语言:javascript复制
git clone git://gcc.gnu.org/git/gcc.git src

开始下载......

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

配置GCC编译环境

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

代码语言:javascript复制
apt-get install libmpc-dev

安装flex

代码语言:javascript复制
$ sudo apt-get install flex

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

代码语言:javascript复制
代码语言:javascript复制
$ ../src/configure --disable-multilib
代码语言:javascript复制

编译GCC

代码语言:javascript复制
$ make

再次等待...

安装GCC

代码语言:javascript复制
$ sudo make install

GCC版本切换

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

代码语言:javascript复制
$ 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选项

代码语言:javascript复制
$ sudo update-alternatives --config gcc

作者环境的输出如下:

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

确认切换结果

代码语言:javascript复制
$ 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


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

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

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

0 人点赞