1.编译安装gcc
1)下载gcc
如果想安装指定版本的gcc, 就从镜像网站上下载源代码,例如安装gcc.11.1(其他版本去镜像网站上选就行),使用如下命令:
wget http://mirror.linux-ia64.org/gnu/gcc/releases/gcc-11.1.0/gcc-11.1.0.tar.xz
tar -Jxvf gcc-11.1.0.tar.xz
cd gcc-11.1.0
如果想安装当前最新的gcc, 就从git master上下载:
git clone git://gcc.gnu.org/git/gcc.git
2) 安装准备
以Ubuntu为例
sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev
sudo apt-get install flex bison texinfo
3)cd到下载的gcc代码主目录中,下载一些必要的库
./contrib/download_prerequisites
4)在gcc主目录外面,新建两个文件夹,分别用于编译和安装,主要的过程在编译文件夹中
cd .. && mkdir temp_gcc && mkdir usr_gcc && cd temp_gcc
5)进行conifg配置来创建makefile,这里需要将路径设置成前面新建的安装目录
../gcc/configure --prefix=/home/mike/gcc/gcc12/usr_gcc --enable-threads=posix --disable-checking --disable-multilib --disable-bootstrap
对于上面的配置选项
- --disable-bootstrap表示不启动3阶段编译,也就是只将源码编译一次,可缩短编译时间。也可以不加这个,gcc源代码就会被编译3次;
- gcc会自动识别当前的机器类型,所以不用指定
--host=x86_64-pc-linux-gnu
; - 根据需要,也可以增加
--enable-languages=c,c++
,生成的gcc就只支持c,c++,以减小安装包,默认是支持c,c++,fortran,objc,objc++ - 配置后,会生成makefile, 可以在生成的makefile中修改编译gcc源代码的选项,默认是-O2 -g等
详细的配置选项说明,可参考gcc的安装配置选项
6)编译
make -j8
7)安装
make install
8)测试
cd /home/mike/gcc/gcc12/usr_gcc/bin
./gcc -v
安装完成后,在环境变量中新建一个软链接,链接到这个./gcc就可以使用了。gcc不支持使用命令行来卸载,要卸载的话直接删除temp_gcc && usr_gcc 这两个文件夹即可。
修改gcc代码后再次编译安装,最好将usr_gcc和temp_gcc两个文件夹删除,然后重复步骤4)- 7)。
2.使用gdb调试gcc代码
- 调试driver-i386.cc等驱动程序的代码,直接使用如下命令:
gdb --args ./gcc -Wall -O3 hello.c
然后在driver-i386.cc中打断点。
- 调试任意其他的代码,如tree-ssa-reassoc.cc等:
先调用usr_gcc/bin中的./gcc,将输入的源代码编译成.i文件
./gcc -O3 -fopenmp -E hello.c -o hello.i
再调用temp_gcc/gcc中的./cc1,将.i文件编译成.s文件,同时调试gcc源代码
gdb --args ./cc1 -O3 -fopenmp hello.i
然后在需要调试的代码中打断点。