首页 > 编程语言 >源码编译GCC7.3.0

源码编译GCC7.3.0

时间:2023-08-25 16:32:28浏览次数:51  
标签:gcc GCC7.3 bz2 tar 编译 -- 7.3 源码

环境

系统 CentOS Linux release 7.9.2009 (AltArch)

docker虚拟机

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

mkdir /home/gcc

cd /home/gcc

源码下载

wget http://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无效

标签:gcc,GCC7.3,bz2,tar,编译,--,7.3,源码
From: https://blog.51cto.com/fengyuzaitu/7232369

相关文章

  • Linux内核模块的编译和运行 - 如何让模块跑起来?
    SRCPATH:=$(shellpwd)ARCH=armCROSS_COMPILE?=/opt/toolchain/bin/arm-linux-gnueabihf-KDIR?=/home/xxx/linux-3.10/obj-m+=hello_world.oall:@echo"buildmodules..."@$(MAKE)-C$(KDIR)M=$(SRCPATH)CROSS_COMPILE=$(C......
  • RK3588开发板编译环境Ubuntu20.04编译配置增加交换内存
    迅为提供的编译环境Ubuntu20.04默认配置了交换内存是9G,如果在编译过程中,因内存不够而编译报错,可以参考本小节进行设置。这里举例分配5G交换内存。在开始之前,使用命令检查一下您的ubuntu的swap分区。sudoswapon--show通过以下命令创建一个用于swap的文件sudofallocate......
  • wsl 编译 android AOSP 13 源码
    安装WSLWindows11版本如下:首先在microsoftstore里面安装ubuntu版本,我选择的是ubuntu22.04:安装完成后,打开"控制面板"-->"程序和功能"-->"启动或关闭Windows功能",打开下面的选项:安装成功后迁移WSL到一个可用空间至少300G的磁盘wsl默认安装在C盘,因......
  • 【算法记录】Java - Base64编码解码源码
    Base64编码表索引对应字符索引对应字符索引对应字符索引对应字符0A17R34i51z1B18S35j5202C19T36k5313D20U37l5424E21V38m5535F22W39n5646G23X40o5757H24Y41p5868I25Z42q5......
  • 直播网站程序源码,js判断上传图片格式类型、尺寸大小
    直播网站程序源码,js判断上传图片格式类型、尺寸大小//判断图片类型varf=document.getElementById("File1").value;if(f==""){ alert("请上传图片");returnfalse;}else{if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){alert("图片类型必须是.gif,jpeg,jpg,png中的一种")re......
  • 在线直播系统源码,java使用Thumbnailator实现图片压缩
    在线直播系统源码,java使用Thumbnailator实现图片压缩1.添加jar包 <!--Thumbnailator图片压缩--><dependency>  <groupId>net.coobird</groupId>  <artifactId>thumbnailator</artifactId>  <version>0.4.8</version></dependency>......
  • 超详细!中标麒麟7下源码安装Zabbix 5.0(同样适用CentOS/RedHat)
    摘要本文详细记录了在中标麒麟7下安装Zabbix5.0的过程,包含Server、Agent、Web页面的安装以及MySQL的初始化。安装方法同样适用于CentOS与RedHat。1相关背景说明1.1操作系统版本服务器的操作系统为中标麒麟7,中标麒麟可以通过nkvers命令,查看操作系统详细信息:查看记录了操作系统发......
  • 汇编语言编译环境搭建(MASM+NASM)
    (目录)一、Windows1.下载相关软件DOSBox官网:https://sourceforge.net/projects/dosbox/下载:DOSBox0.74-3-win32-installer.exeMASM5.0网上可以下载2.配置环境双击之后,修改配置文件:windowresolution=1024x768output=ddraw在DOSBox模拟器中挂载MASM5.0mountc:d......
  • Spring框架源码结构
    骑士李四记录:Spring源码解析Spring是一款用于简化企业级Java应用开发的分层开源框架,它有着强大的扩展、融合能力,善于将各种单层框架完美地糅合在一起,并建立一个完整体系,统一、高效地构造可提供企业级服务的应用系统。Spring主要分为8大模块:数据处理模块(DataAccess/Integration)、......
  • 设置反编译
    安装插件,有如下两种方法  A.将net.sf.jadclipse_3.2.4.jar复制到D:\leaf\eclipse\plugins目录下。  B.在d:\leaf下建立ecliplsePlungin\jadclipse\eclipse\plugins目录,将net.sf.jadclipse_3.2.4.jar放到该目录。在d:\leaf\eclipse\links下建jadclipse.link,内容为path=d\:\\lea......