在 x86_64 和 aarch64 架构下实现源码编译 gcc830
前提条件
- 提前下载源码 gcc-8.3.0.tar.gz
- 提前下载 gmp、mpfr、mpc、isl 依赖库
解压源码
解压 gcc-8.3.0.tar.gz
1 | tar -zxvf gcc-8.3.0.tar.gz |
安装依赖
- 方法一:
打开contrib/download_prerequisites
文件,看到依赖列表:
1 | gmp='gmp-6.1.0.tar.bz2' |
里面的网址打不开了,新的网址为:https://gcc.gnu.org/pub/gcc/infrastructure/
,然后手动把对应版本的依赖下载好,不需要解压,直接把压缩包移动到 gcc-8.3.0 源码下。
然后,运行脚本,检查下依赖是否满足:
1 | lhx@ubuntu:~/gcc/gcc-8.3.0$ ./contrib/download_prerequisites |
- 方法二:
解压 gmp、mpfr、mpc、isl 这些库的源码包 tar.gz 到 gcc-8.3.0 目录下,并把这些库的名字中的版本号去掉,这样编译 gcc 的时候,就能识别到这些库的源码目录,并联合编译这些库。不然编译 gcc 的时候可能报错找不到这些库。
1 | cd gcc-8.3.0 |
编译安装 gcc
- 编译选项一:
1
2
3mkdir build && cd build
../gcc-8.3.0/configure -enable-checking=release -enable-language=c,c++ -disable-multilib --prefix=path/to/gcc830/install
make -j64 && make install - 编译选项二:
1
2
3mkdir build && cd build
../gcc-8.3.0/configure --prefix=/home/lhx/gcc830/install --enable-shared --enable-threads=posix --enable-languages=c,c++,fortran --disable-multilib
make -j64 && make install
配置 gcc 环境
在.bash_profile
文件添加下面的环境变量:
1 | # export gcc-8.3.0 |
然后输入命令 source .bash_profile
更新后生效,此时通过 which gcc
命令可以查看到已使用自己编译的 gcc 版本。