升级前准备工作参考之前《Debian8.5安装编译GCC6.1.0笔记》。
环境:
debian buster amd64
原GCC版本 7.3.0
1、从官网镜像下载gcc
https://gcc.gnu.org/mirrors.html 镜像站点列表,从这里选个看得顺眼的镜像站点,下载 gcc-8.1.0.tar.gz
(我用的是http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.1.0/gcc-8.1.0.tar.gz)
解压至一指定目录。如:
~/gcc-8.1.0
ps:建议以root登录。
2、安装依赖
apt install build-essential libgmp-dev libmpfr-dev libmpc-dev
3、配置
进入~/gcc-8.1.0
./configure --disable-multilib #因我只用64位版,所以不需要多架构,只需要amd64就行了
生成makefile文件
3、编译
直接运行make
然后是漫长的编译(10小时以上)
4、安装
make install
默认安装在/usr/local/bin ,库安装于/usr/local/lib/gcc/x86_64-pc-linux-gnu/8.1.0
此时因安装的目录不在path,所以还是gcc 7.3
5、创建软链
1)删除原软链
cd /usr/bin && rm g++ gcc #删除原gcc7软链
2)建立软链
cd /usr/local/bin && ln -s $(pwd)/gcc /usr/bin/gcc
ln -s $(pwd)/g++ /usr/bin/g++
同样,/usr/local/lib/gcc/x86_64-pc-linux-gnu/8.1.0 软链到 /usr/lib/gcc/x86_64-pc-linux-gnu/8.1.0
6、测试
建个临时测试文件check.cpp
#include <iostream>
int main(int argc,char** argv)
{
using namespace std;
cout<<__cplusplus<<endl;
return 0;
}
编译 g++ check.cpp --std=c++2a
生成a.out
可以看到__cplusplus的值已经是 201709L 了
如果是gcc 7.3,那么使用 --std=c++2a就会报错。