专栏首页Android开发实战Centos安装高版本GCC

Centos安装高版本GCC

CentOS7.2安装高版本gcc

其他centos系列可参考,未经测试,如有问题,可留言商讨

由于某些比较新的软件需要最新版本的gcc,常用centos 7.2 使用yum install gcc安装的版本为4.8.5可能不满足软件的需求, 这里介绍下怎么折腾最新版本的GCC

GCC官网:https://gcc.gnu.org/

我这里当前版本最新为9.3,那么我们就安装最新版本:

01

安装基础依赖环境

yum install glibc-headers gcc-c++ gcc gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel

02

下载

GCC下载地址很多,我们从国内的hust镜像站下载gcc源码包。

http://mirror.hust.edu.cn/gnu/gcc/

我选择的是gcc-9.3.0.tar.gz。

cd
mkdir software
cd software
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz
tar zxvf gcc-9.3.0.tar.gz
cd cc-9.3.0

03

下载依赖包:

./contrib/download_prerequisites

04

配置

mkdir build cd build ../configure --prefix=/usr/local/gcc-9.3.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib

configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中--prefix选项是配置安装的路径。

如果不配置 --prefix 选项,安装后:

可执行文件默认放在/usr /local/bin

库文件默认放在/usr/local/lib

配置文件默认放在/usr/local/etc

其它的资源文件放在/usr /local/share

configure各项参数详解:

--prefix=/usr/local/gcc-9.3.0/:把所有资源文件都放在该路径下。

--enable-checking=release:生成的编译器在编译过程中不做额外检查。

--enable-languages=c,c++:让gcc支持c,c++。

--disable-multilib:不生成编译为其他平台可执行代码的交叉编译器。

05

编译

make

这个过程需要很久。需要耐心等待

06

安装

make install

07

善后

如果上面这些步骤你都还没有出错,那么,你成功了90%,我们需要一下善后的工作:

01

删除yum下载的旧版本gcc

yum remove gcc

02

将新版本的gcc加入命令搜索路径中:

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

03

添加LD_LIBRARY_PATH环境变量

在/etc/profile中添加如下代码:

# gccLD_LIBRARY_PATH=/usr/local/gcc-9.3.0/lib#export LD_LIBRARY_PATH

更改完后执行

source /etc/profile

04

最后更换libstdc++.so.6

cp /usr/local/gcc-9.3.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6.0.28
rm -f /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

对于第四步不明白的可以使用

strings /usr/local/gcc-9.3.0/lib64/libstdc++.so.6.0.28 | grep GLIBCXX

对比一下替换前和替换后的/libstdc++.so.6有什么区别

如有问题请留言,我们一起折腾

本文分享自微信公众号 - 喘口仙氣(gh_db8538619cdd),作者:Anymarvel

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android Binder跨进程通信

    为了保证 安全性 & 独立性,一个进程 不能直接操作或者访问另一个进程,即Android的进程是相互独立、隔离的

    Anymarvel
  • 设计模式-单例模式

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。

    Anymarvel
  • (Kotlin and Java)设计模式-建造者模式

    建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    Anymarvel
  • manjaro linux 安装MYSQL8.0过程记录

      博主使用的是manjaro gnome版本的linux系统,之前安装mariadb和mysql数据库任何版本都失败。使用pacman安装以及在mysql官网...

    雨落凋殇
  • Facebook秘密打造试验卫星,以毫米波信号向地球传输网络信号 | 热点

    据外媒最新报道,此前在今年5月,有媒体曾经披露Facebook正在秘密打造一颗实验卫星,用其通过毫米波信号向地球传输网络信号。如今,Facebook向科技媒体《...

    镁客网
  • IntelliJ 工具栏丢失

    你将会看到一个打开的搜索对话框,然后在 Action 中输入 tool,不区分大小写,然后将 toolbar 选择 on。

    HoneyMoose
  • 80386的各种寄存器一览

    注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了...

    s1mba
  • 清理disuz垃圾用户信息SQL语句

    select `hadoop_members`.`username` from `hadoop_members` left join `cdb_members`...

    一见
  • 深入理解 Lua 虚拟机

    ? 作者:nicochen,腾讯 IEG 游戏开发工程师 本文从一个简单示例入手,详细讲解 Lua 字节码文件的存储结构及各字段含义,进而引出 Lua 虚拟机...

    腾讯技术工程官方号
  • 【学员笔记分享】二进制逆向学习笔记:汇编之通用寄存器

    https://blog.csdn.net/cqkxboy168/article/details/8994479

    徐焱

扫码关注云+社区

领取腾讯云代金券