记录一次编译gcc的过程

记录一次编译gcc的过程

准备

系统:Ubuntu 20.04.1

软件包:gcc-10.2.0.tar.gz、gmp-6.2.1.tar.zst、m4-1.4.18.tar.gz(之后换成了m4-1.4.7.tar.gz)、mpc-1.2.1.tar.gz、mpfr-4.1.0.zip
在这里插入图片描述
使用到的命令

#解压
tar -zvxf ***.tar.gz
tar -I zstd -xvf ***.tar.zst
unzip ***.zip
#安装
./configure
make
sudo make install
#安装其他软件
sudo apt install

开始安装

根据官方的说明,gcc依赖m4、gmp、mpc、mpfr,所以在安装gcc之前要依次安装m4、gmp、mpc、mpfr。为什么要依次安装这些包?因为这些软件从后向前有依赖关系,直接安装gcc会有如下的提示。
在这里插入图片描述
在安装gcc时,运行命令./configure --help | more可以看到,在安装gcc时,系统会在PATH中检索这些依赖包。
在这里插入图片描述
官网对这些包都有版本要求,传送门,这里列举了安装过程中可能用到的包,以及版本要求。

在使用命令tar -I zstd -xvf gmp-6.2.1.tar.zst解压gmp-6.2.1.tar.zst时,没能成功解压,原因是没有安装zstd

成功解压之后进入目录,运行./config,系统提示没有安装m4,有的Ubuntu安装的有m4,而有的Ubuntu没有安装。
在这里插入图片描述
在安装m4的时候,又出错了。
在这里插入图片描述
看了网上的方法,是由于使用的版本太高了,于是就换成了比较贴近gcc要求的版本m4-1.4.7.tar.gz。具体是什么引起的错误,先挖个坑,以后再研究。

在安装之前使用./configure --help | more命令可以看到这些包的默认安装路径是/usr/local
在这里插入图片描述
在使用make install时可以通过--prefix = target_path,指定想要安装的路径。

四个依赖包安装完成之后会在/usr/local中看到新添加的动态库以及头文件。
在这里插入图片描述
官网建议新建一个空白文件夹用来编译gcc,于是我新建了一个gcc-build文件夹。当运行configure时,系统提示如下
在这里插入图片描述
我选择了只编译一个64位的编译器,configure --disable=multilib

在进行下一步时,系统提示

configure: error: C++ preprocessor "/lib/cpp" fails sanity check

网上说是缺少了相关的C++库,解决方法如下:

#Ubuntu解决方法
apt install build-essential
apt install g++
# centos解决方法
yum install glibc-headers
yum install gcc-c++

然后就可以进行下一步了。执行make的时间很长,我等了将近3个小时。

由于在安装时我使用的是默认安装路径,导致系统自带的gcc被覆盖。gcc --version显示的是最新版本。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值