centos 7升级gcc到10.5.0

这篇具有很好参考价值的文章主要介绍了centos 7升级gcc到10.5.0。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、安装gcc

1.1、查看是否含有gcc及gcc版本

1.2、快速安装gcc

2、升级gcc

2.1、下载gcc源码包并解压缩

2.2、下载编译依赖项

2.3、新建gcc-bulid目录(与gcc-10.5.0同级)并进入该目录中

2.4、生成Makefile文件

2.5、开始编译

2.6、安装

2.7、重启

2.8、验证

3、依赖新的版本

3.1 、进入/usr/lib64目录

3.2、拷贝libstdc++.so.6.0.28到系统/usr/lib64目录下

3.3、修改文件权限

3.4、备份原libstdc++.so.6软连接

3.5、创建新的软连接,连接到新的库

3.6、验证依赖是否更新

3.7、验证新的库是否生效


 可能遇到的问题:
1、/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found问题

2、编译报错:error: 'const char* libc_name_p

[INFO ]  =================================================================
[INFO ]  Installing final gcc compiler
[EXTRA]    Configuring final gcc compiler
[EXTRA]    Building final gcc compiler
[ERROR]    cfns.gperf:101:1: error: 'const char* libc_name_p(const char*, unsigned int)' redeclared inline with 'gnu_inline' attribute
[ERROR]    make[3]: *** [cp/except.o] Error 1
[ERROR]    make[2]: *** [all-gcc] Error 2
[ERROR]    make[1]: *** [all] Error 2
[ERROR]  

1、安装gcc

由于 Linux 操作系统的自由、开源,在其基础上衍生出了很多不同的 Linux 操作系统,如 CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,大多数都默认装有 GCC 编译器(版本通常都较低)。

1.1、查看是否含有gcc及gcc版本

[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.5.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../../gcc-6.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 6.5.0 (GCC)
[root@localhost ~]#

可以看到,系统中包含了gcc且版本为6.5.0,如果没有gcc,可以通过下面命令来进行安装

1.2、快速安装gcc

yum -y install gcc
yum -y install gcc-c++

通过如上命令得到的gcc通常版本较低。

2、升级gcc

升级gcc需要在系统中包含一个低版本的gcc

2.1、下载gcc源码包并解压缩

下载地址:gnu-gcc安装包下载_开源镜像站-阿里云,可以手动下载,也可以通过wget直接下载到服务器上

# 进入目录
cd /usr/local
# 下载源码
wget https://mirrors.aliyun.com/gnu/gcc/gcc-10.5.0/gcc-10.5.0.tar.gz
# 解压缩
tar -zxvf gcc-10.2.0.tar.gz
# 进入gcc源码目录
cd gcc-10.5.0/

2.2、下载编译依赖项

./contrib/download_prerequisites

执行完毕后,可以发现gcc-10.5.0的目录中多了gmp、isl、mpc、mpfr,如果没有这些依赖包,则不能进行下面的操作。

2.3、新建gcc-bulid目录(与gcc-10.5.0同级)并进入该目录中

mkdir gcc-build
cd gcc-build/

2.4、生成Makefile文件

../gcc-10.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib

这时候如果出现报错:

checking for the correct version of gmp.h... no configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.

解决办法:执行以下命令

yum -y install  gmp  gmp-devel  mpfr  mpfr-devel  libmpc  libmpc-devel

再次运行命令就成功了

../gcc-10.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib

2.5、开始编译

make

注意:编译时间较长,请选择适当的时间进行此操作。

GCC高版本编译低版本GCC报错:


[INFO ]  =================================================================
[INFO ]  Installing final gcc compiler
[EXTRA]    Configuring final gcc compiler
[EXTRA]    Building final gcc compiler
[ERROR]    cfns.gperf:101:1: error: 'const char* libc_name_p(const char*, unsigned int)' redeclared inline with 'gnu_inline' attribute
[ERROR]    make[3]: *** [cp/except.o] Error 1
[ERROR]    make[2]: *** [all-gcc] Error 2
[ERROR]    make[1]: *** [all] Error 2
[ERROR] 

解决办法,修改要编译的GCC代码,参考链接如下 

https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=ec1cc0263f156f70693a62cf17b254a0029f4852

2.6、安装

make install

2.7、重启

2.8、验证

[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/10.5.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../../gcc-10.5.0/configure --prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 10.5.0 (GCC)
[root@localhost ~]#

3、依赖新的版本

3.1 、进入/usr/lib64目录

cd /usr/lib64

3.2、拷贝libstdc++.so.6.0.28到系统/usr/lib64目录下

cp /usr/local/lib64/libstdc++.so.6.0.28 .

3.3、修改文件权限

chmod 755 libstdc++.so.6.0.28

3.4、备份原libstdc++.so.6软连接

mv libstdc++.so.6 libstdc++.so.6-bak

3.5、创建新的软连接,连接到新的库

ln -s libstdc++.so.6.0.28 libstdc++.so.6

3.6、验证依赖是否更新

ll libstd*
[root@localhost lib64]#  ll libstd*
lrwxrwxrwx. 1 root root       19 Jul 14 20:05 libstdc++.so.6 -> libstdc++.so.6.0.22
-rwxr-xr-x. 1 root root   995840 Sep 29  2020 libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 11541760 Jul 14 20:04 libstdc++.so.6.0.22
-rwxr-xr-x. 1 root root 16833120 Jul 14 04:46 libstdc++.so.6.0.28
lrwxrwxrwx. 1 root root       19 Feb  9  2022 libstdc++.so.6-bak -> libstdc++.so.6.0.19
lrwxrwxrwx. 1 root root       19 Jul 14 04:48 libstdc++.so.6-bak.bak -> libstdc++.so.6.0.28
[root@localhost lib64]#

3.7、验证新的库是否生效

strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
[root@localhost lib64]# strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22

jdk下载:Index of java-local/jdk文章来源地址https://www.toymoban.com/news/detail-570392.html

到了这里,关于centos 7升级gcc到10.5.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CentOS gcc介绍及快速升级

    GCC(GNU Compiler Collection)是一个开源的编译器套件,由 GNU( GNU \\\'s Not Unix!的递归缩写) 项目开发和维护。它是一个功能强大且广泛使用的编译器,支持多种编程语言,包括 C、C++、Objective-C、Fortran、Ada 和其他一些语言。 在 CentOS 上,GCC 是默认的编译器套件,它提供了一组工具和

    2024年02月11日
    浏览(44)
  • centos7 升级 gcc 版本

    GNU Mirror List 查看动态库版本 查找gcc生成的最新动态库 查看libstdc++.so 进入libstdc++.so配置目录 CentOS 7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。红帽其实已经编译好了高版本的gcc,但未

    2023年04月26日
    浏览(53)
  • CentOS 7升级gcc/G++版本

            Centos 7默认gcc版本为4.8,有时需要更高版本,只需要执行几条命令,无需下载源码编译编译。 安装centos-release-scl 安装devtoolset 注意,如果想安装7.*版本的,就改成devtoolset-7-gcc*,以此类推 激活对应的devtoolset 查看gcc版本 这条激活命令只对本次会话有效,重启会话后还

    2024年02月06日
    浏览(42)
  • 【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version `GLIBC_2.27‘ not found

    文章已收录至https://lichong.work,转载请注明原文链接。 ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验🤝 最近做一个前端项目Jenkins的自动构建时,项目使用nodejs18,正好公司Jenkins节点有些不够用,就用了台资源空余比较多的服务器用于充当Jenkins节点,配置好

    2024年02月16日
    浏览(44)
  • CentOS GCC 离线升级 编译安装 8.3.0

    从系统自带的 gcc-4.8.5 版本升级至 gcc-8.3.0 版本 目录 下载源代码: 下载依赖: 编译(约一个小时) 重开控制台确认是否生效 https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz 其他版本下载:https://ftp.gnu.org/gnu/gcc 解压: https://ftp.gnu.org/pub/g

    2024年02月10日
    浏览(51)
  • CentOS常见问题应对,升级make和gcc版本

    本文讲解了编译源码过程中的常见问题,以及如何升级make和gcc版本。 点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达 今天讲一个 CentOS 中编译时的常见问题:在编译源码过程中 make 或者 gcc 版本过低导致的异常 configure: error。 具体报错如下: 此问题尤其

    2024年02月01日
    浏览(40)
  • linux升级gcc版本详细教程

    一般linux操作系统默认的gcc版本都比较低,例如centos7系统默认的gcc版本为4.8.5。gcc是从4.7版本开始支持C++11的,4.8版本对C++11新特性的编译支持还不够完善,因此如果需要更好的体验C++11以及以上版本的新特性,需要升级gcc到一个较高的版本。 本文给出了linux系统中涉及国家g

    2024年02月03日
    浏览(45)
  • 【linux离线升级gcc版本---gcc4.8.5-->gcc12.2.0】

    👈【上一篇】 💖The Begin💖 点点关注,收藏不迷路💖 【下一篇】👉 GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj)等。 centos 7默认安装的

    2024年02月13日
    浏览(53)
  • linux基础60——在线升级gcc

    1)安装scl源。SCL是Software Collections的缩写,收录了许多程序的新版本,例如gcc, PHP, git, python等。安装的软件可与旧版共存,包名多以rh-为前缀。 2)安装devtoolset。devtoolset是按照 Software Collections 的规范打出来的一套 rpm 包 3)devtoolset激活。 4)设置全局生效。

    2024年02月12日
    浏览(61)
  • linux离线手动安装升级gcc

    GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言 的程序,可根据需要选择安装支持的语言。 查看当前gcc版本: gcc-7.2.0版本:https://ftp.gnu.org/gnu/gcc/ 下载依赖,共依赖四个工具gmp、isl、mpc、mpfr gmp-6.1.0版本:https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2 isl-0.16版本: http://www.mirrorservice.

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包