centos7 arm服务器编译安装gcc 8.2

前言

当前电脑的gcc版本为4.8.5,但是在编译其他依赖包的时候,出现各种奇怪的问题,会莫名其妙的中断编译。本地文章讲解如何自编译安装gcc,替换系统自带的gcc。

环境准备

gcc 需要 8.2:下载地址

开始编译

1、解压gcc压缩包

tar -xvf gcc-8.2.0.tar.xz

目录结构:

2、修改下载 GMP, MPFR, MPC, ISL 库源码链接

编译 GCC 依赖于以上四种库。用户在编译 GCC 之前,将它们的源码路径链接到 GCC 源码目录中即可识别。 这些库最终均静态链接到 GCC 二进制中。 用户可直接使用 GCC 源码中提供的 download_prerequisites 脚本,从上游网站下载它们的源码:

复制代码
cd gcc-8.2.0
sed -i 's#ftp://gcc.gnu.org/pub/gcc/infrastructure/#https://paddle-ci.gz.bcebos.com/#g' ./contrib/download_prerequisites
3、修改环境变量
复制代码
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE
4、下载 GMP, MPFR, MPC, ISL 库源码
复制代码
./contrib/download_prerequisites

显示下面图,代表已经下载成功。

5、构建编译位置
复制代码
cd .. && mkdir temp_gcc82 && cd temp_gcc82
../gcc-8.2.0/configure --prefix=/usr/local/gcc-8.2 --enable-threads=posix --disable-checking --disable-multilib

如下图:

6、编译
复制代码
make -j$(nproc) && make install
7、添加库文件

export LD_LIBRARY_PATH=/usr/local/gcc-8.2/lib64:$LD_LIBRARY_PATH

8、更新gcc

上面的过程执行完,如果你在linux命令行中输入:gcc -version,你会发现显示的还是原来的版本,这是因为gcc还没有更新,执行的还是原来的gcc命令。

原来的gcc命令位于目录/usr/bin/gcc等目录下面,为了不覆盖原来的命令。将原来的相关内容进行备份处理,执行如下命令:

mv /usr/bin/gcc /usr/bin/gcc480

mv /usr/bin/g++ /usr/bin/g++480

mv /usr/bin/c++ /usr/bin/c++480

mv /usr/bin/cc /usr/bin/cc480

安装的gcc新版本位于/usr/local/bin目录下面,需要为新版本gcc创建软链接:

ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/gcc

ln -s /usr/local/gcc-8.2/bin/g++ /usr/bin/g++

ln -s /usr/local/gcc-8.2/bin/c++ /usr/bin/c++

ln -s /usr/local/gcc-8.2/bin/gcc /usr/bin/cc

9、检测版本
复制代码
gcc --version

显示下图,代表升级成功。

10、压缩编译后的gcc-8.2.zip
复制代码
zip -vr gcc-8.2.zip /usr/local/gcc-8.2/
11、编译成功后,还需要升级libstdc++.so.6文件

这里请查看文章【centos7 arm服务器编译升级安装动态库libstdc++.so.6,解决GLIBC和CXXABI版本低的问题

总结

这里编译gcc非常耗时,一版2、3个小时才能完成,这里提供一份编译后的gcc压缩包,理论上可以只需要直接进行上面7、8、9步,就可以升级成功,当然这种方式慎用,有问题还原gcc后,然后在正常按教程编译。

完毕!!!

编译后的gcc下载地址:centos7的arm服务器编译后的gcc-8.2压缩包

相关推荐
M78佐菲8 小时前
ARM学习笔记(1)
linux·arm开发·笔记·嵌入式硬件·学习
sunoo-22917 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Doraemomo17 小时前
IMX6ULL裸机开发——PWM
arm开发·嵌入式硬件·imx6ull
老当益壮梁奶奶19 小时前
ARM汇编学习笔记(五):从按键轮询到 GIC 中断控制器(ARM Cortex-A7 )
arm开发·笔记·单片机·嵌入式硬件
M78佐菲20 小时前
ARM学习笔记(五)
linux·arm开发·笔记·嵌入式硬件·学习
小诗懂技术1 天前
ARM 裸机中断:从按键到 GIC 的处理流程
arm开发
从零开始的嵌入式之旅1 天前
day46
linux·arm开发·笔记·嵌入式硬件
老当益壮梁奶奶1 天前
ARM汇编学习笔记(四):i.MX6ULL裸机开发:从汇编点灯到C语言BSP工程管理
c语言·arm开发·单片机·嵌入式硬件·51单片机
sunoo-2291 天前
【ARM嵌入式学习笔记Day5】一文打通GPIO中断全链路:从硬件引脚→GIC→汇编入口→C语言处理
arm开发·笔记·学习·中断·gic·裸机开发
PiaoKe___1 天前
云手机原理与 Python 自动化实战:ADB 批量控制、任务调度与落地建议
服务器·arm开发·python·自动化