背景介绍

GCC (GNU C Compiler)是 GNU 这一开源组织开发的编译器,也是目前绝大多数 Linux 发行版所默认使用的编译器。因为最近想简单折腾点乱七八糟的东,所以现在让咱们来看看怎么从源码编译这玩意。

源码下载

我们使用 git 便能从官网进行 GCC 源码的拉取,通过如下命令完成,这里注意自行指定本地目标文件夹。

1
git clone git://gcc.gnu.org/git/gcc.git your_local_dir

如果需要编译特定版本的 GCC,则只需要 checkout 到指定版本。

1
git checkout releases/gcc-13.3.0

安装依赖

如果直接开始编译可能会遇到这样的一条报错信息。

1
configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.

需要安装如下依赖,对于 openSUSE Tumbleweed 来说是这几个包,其他发行版请自行查询,不过包名应该都是差不多的,而且互相之间还存在一定的依赖关系(例如在 Ubuntu 上只需要额外安装 libmpc-dev 就行):

1
sudo zypper in gmp-devel

开始编译

这里吾选择新建一个文件夹(build)进行编译,并将其安装到另外一个文件夹(prefix)当中,毕竟吾可不想破坏本地包管理器的环境。不过新建一个文件夹进行编译倒是老生常谈的事情,但有一点容易被人所忽视的便是我们的这些文件夹不应当放置在 GCC 源码文件夹下,诚如 GCC 文档所言.

1
2
3
4
5
6
mkdir build
mkdir prefix
cd build
gcc_dir/configure --prefix=prefix_dir --enable-multilib --enable-language=c,c++
make -j$(nproc)
make install

随后我们便能在 prefix/bin 下找到我们自行编译的 GCC 了。