如何将GCC7.3.0源码编译过程改写为一个长尾词的?

2026-04-12 06:112阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计818个文字,预计阅读时间需要4分钟。

如何将GCC7.3.0源码编译过程改写为一个长尾词的?

在CentOS Linux release 7.9.2009 (AltArch) 系统上,使用docker虚拟机创建/home/gcc目录,并构建整个gcc编译工具目录:

bashmkdir /home/gcccd /home/gccwget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xztar jxv

环境

系统 CentOS Linux release 7.9.2009 (AltArch)

docker虚拟机

创建/home/gcc目录构建整个gcc编译工程目录

如何将GCC7.3.0源码编译过程改写为一个长尾词的?

mkdir /home/gcc

cd /home/gcc

源码下载

wget ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz

解压

tar jxvf gcc-7.3.0.tar.xz

创建中间文件输出目录

mkdir gccbuild

创建最终目标文件输出目录

mkdir gccout

ls查看当前的文件夹,有如下的文件夹

gccout gccbuild gcc-7.3.0


安装gcc的依赖软件

gcc的软件包内提供了自动下载需要软件的脚本: ./contrib/download_prerequisites

会下载四个文件:

gmp-6.1.0.tar.bz2

mpc-1.0.3.tar.gz

isl-0.16.1.tar.bz2

mpfr-3.1.4.tar.bz2


把这几个文件复制到外面一层目录,解压缩

tar jxvf isl-0.16.1.tar.bz2

tar jxvf mpfr-3.1.4.tar.bz2

tar jxvf gmp-6.1.0.tar.bz2

tar zxvf mpc-1.0.3.tar.gz


把解压的目录复制到gcc-7.3.0目录中

mv isl-0.16.1 gcc-7.3.0/isl

mv mpfr-3.1.4 gcc-7.3.0/mpfr

mv gmp-6.1.0 gcc-7.3.0/gmp

mv mpc-1.0.3 gcc-7.3.0/mpc


重置相关的环境变量


unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE


否则会导致宏定义冲突 ,出现大量如下错误

error: Unable to find a suitable type for HOST_WIDE_INT

error: 'HOST_WIDE_INT' does not name a type

error: expected ',' or '...' before 'x' ffs_hwi (unsigned HOST_WIDE_INT x)

error: expected initializer before 'zext_hwi'

zext_hwi (unsigned HOST_WIDE_INT src, unsigned int prec)

最好仔细检查一遍,输出环境变量是否为空

echo $CPLUS_INCLUDE_PATH


构建Makefile

进入gccbuild文件夹,进行编译,目标是将生成的中间文件存放在gccbuild文件夹,避免污染源码

cd gccbuild ../gcc-7.3.0/configure --prefix=/home/gcc/gccout/


可以添加如下相关参数

--enable-languages 表示编译出来的编译器支持哪些语言,例如--enable-languages=c,c++ 说明支持c.c++语言编译

--disable-multilib 表示编译出来的编译器不支持交叉编译其他平台的程序

--disable-checking表示编译出来的编译器不做额外检查

例如

../gcc-7.3.0/configure --prefix=/home/gcc/gccout/ --enable-languages=c,c++ --disable-multilib --host=aarch64-linux-gnu


编译


make -j64

可以通过如下指令,查看有多少CPU加速编译,单核CPU编译耗时2-3小时

cat /proc/cpuinfo | grep "processor" | wc -l


安装

make install


问题

configure: error: building out of tree but ../gcc/gcc-7.3.0 contains host-aarch64-unknown-linux-gnu.

Use a pristine source tree when building in a separate tree

出现该问题是编译输出的中间文件并没有按照上面操作,先进入中间输出文件编译,重新下载源码,按照上面操作即可,重新执行configure无效

本文共计818个文字,预计阅读时间需要4分钟。

如何将GCC7.3.0源码编译过程改写为一个长尾词的?

在CentOS Linux release 7.9.2009 (AltArch) 系统上,使用docker虚拟机创建/home/gcc目录,并构建整个gcc编译工具目录:

bashmkdir /home/gcccd /home/gccwget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xztar jxv

环境

系统 CentOS Linux release 7.9.2009 (AltArch)

docker虚拟机

创建/home/gcc目录构建整个gcc编译工程目录

如何将GCC7.3.0源码编译过程改写为一个长尾词的?

mkdir /home/gcc

cd /home/gcc

源码下载

wget ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz

解压

tar jxvf gcc-7.3.0.tar.xz

创建中间文件输出目录

mkdir gccbuild

创建最终目标文件输出目录

mkdir gccout

ls查看当前的文件夹,有如下的文件夹

gccout gccbuild gcc-7.3.0


安装gcc的依赖软件

gcc的软件包内提供了自动下载需要软件的脚本: ./contrib/download_prerequisites

会下载四个文件:

gmp-6.1.0.tar.bz2

mpc-1.0.3.tar.gz

isl-0.16.1.tar.bz2

mpfr-3.1.4.tar.bz2


把这几个文件复制到外面一层目录,解压缩

tar jxvf isl-0.16.1.tar.bz2

tar jxvf mpfr-3.1.4.tar.bz2

tar jxvf gmp-6.1.0.tar.bz2

tar zxvf mpc-1.0.3.tar.gz


把解压的目录复制到gcc-7.3.0目录中

mv isl-0.16.1 gcc-7.3.0/isl

mv mpfr-3.1.4 gcc-7.3.0/mpfr

mv gmp-6.1.0 gcc-7.3.0/gmp

mv mpc-1.0.3 gcc-7.3.0/mpc


重置相关的环境变量


unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE


否则会导致宏定义冲突 ,出现大量如下错误

error: Unable to find a suitable type for HOST_WIDE_INT

error: 'HOST_WIDE_INT' does not name a type

error: expected ',' or '...' before 'x' ffs_hwi (unsigned HOST_WIDE_INT x)

error: expected initializer before 'zext_hwi'

zext_hwi (unsigned HOST_WIDE_INT src, unsigned int prec)

最好仔细检查一遍,输出环境变量是否为空

echo $CPLUS_INCLUDE_PATH


构建Makefile

进入gccbuild文件夹,进行编译,目标是将生成的中间文件存放在gccbuild文件夹,避免污染源码

cd gccbuild ../gcc-7.3.0/configure --prefix=/home/gcc/gccout/


可以添加如下相关参数

--enable-languages 表示编译出来的编译器支持哪些语言,例如--enable-languages=c,c++ 说明支持c.c++语言编译

--disable-multilib 表示编译出来的编译器不支持交叉编译其他平台的程序

--disable-checking表示编译出来的编译器不做额外检查

例如

../gcc-7.3.0/configure --prefix=/home/gcc/gccout/ --enable-languages=c,c++ --disable-multilib --host=aarch64-linux-gnu


编译


make -j64

可以通过如下指令,查看有多少CPU加速编译,单核CPU编译耗时2-3小时

cat /proc/cpuinfo | grep "processor" | wc -l


安装

make install


问题

configure: error: building out of tree but ../gcc/gcc-7.3.0 contains host-aarch64-unknown-linux-gnu.

Use a pristine source tree when building in a separate tree

出现该问题是编译输出的中间文件并没有按照上面操作,先进入中间输出文件编译,重新下载源码,按照上面操作即可,重新执行configure无效