在Ubuntu上编译gcc

于 2021-02-07 发布

新建一个文件夹用于打包deb,我用的文件夹名字是gcc_10.2.0-1:

1
2
3
mkdir ~/gcc_10.2.0-1
mkdir -p gcc_10.2.0-1/usr/local
mkdir -p gcc_10.2.0-1/DEBIAN

新建一个文件夹用于存放gcc源码和编译目录,这里是gcc-compile:

1
mkdir ~/gcc-compile

然后从阿里云上面找到gcc的源码包,所有gcc源码包的存放地址是https://mirrors.aliyun.com/gnu/gcc,各个版本号就是一个目录,比如我们要编译10.2.0,gcc-10.2.0的源码包就在https://mirrors.aliyun.com/gnu/gcc/gcc-10.2.0/里面。

执行以下命令下载和解压源码:

1
2
3
cd gcc-compile 
wget 源码包(xz格式)地址
tar xvf gcc-*.xz

获得目录gcc-10.2.0。调用gcc-10.2.0自带的脚本下载依赖包:

1
gcc-10.2.0/contrib/download_prerequisites

在gcc-compile目录下,新建一个objdir来进行编译:

1
2
mkdir objdir
cd objdir

gcc的configure有一些配置项,比较有用的是:

选项 解释
--prefix= 安装目录前缀,这里使用~/gcc_10.2.0-1/usr/local
--build= 编译类型,这里用x86_64-linux-gnu
--host= 编译的主机类型,可以理解成本机的系统类型,这里用x86_64-linux-gnu
--target= 编译出来的gcc运行的目标平台类型,因为是用在本机上,所以是x86_64-linux-gnu
--enable-checking= release
--enable-languages= 编译的gcc支持的语言类型,我只用c和c++,所以就是c,c++
--disable-multilib 因为只打算支持x64,所以就禁用对x32的支持

所以进行configure的命令就是:

1
~/gcc-compile/gcc-10.2.0/configure --prefix=~/gcc\_10.2.0-1/usr/local  --disable-multilib --build=x86\_64-linux-gnu --host=x86\_64-linux-gnu --target=x86\_64-linux-gnu --enable-checking=release --enable-languages=c,c++

之后就make和install就好了:

1
2
make -j8
make install

目录