CentOS/Linux 下升级GCC与G++

在学习或者编写C/C++程序的时候,可能由于编译器的版本较低,导致一些新增的知识点在加入到程序编译时,会出现一些问题,例如编译完成之后生成可执行文件,但你在执行可执行文件的时候,系统会报这样的错误:

[root@localhost ~]# ./a.out 
./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14′ not found (required by ./a.out)

这个原因是你升级了gcc的版本之后却没有用生成的动态库替换老版本的动态库, 这样在程序编译运行的时候偶尔就会遇到上面所述的问题,这个问题我们放到后面再进行解诀,下面就开始介绍gcc/g++编译器的升级过程:

首先升级gcc和g++是没有便捷方式的,例如像yum update ….  yum install  这些命令都是没用的,或者添加yum的repo文件也是不行的,所以我们只能手动编译安装了,下面就开始我们的安装过程。

1、获取安装包并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2

tar -jxvf gcc-6.1.0.tar.bz2当然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本可供下载,最新的版本已经更新到7.1.0,但是我们并不需要最新版本,下面就用6.1.0版本来操作,其他的版本都可类似操作。

2、下载供编译需求的依赖项
这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
cd gcc-6.1.0

./contrib/download_prerequisites
运行这个脚本要在联网状态下完成,因为要下载配置,安装依赖库,这也需要时间,网络不好的时候会是一个较慢长的等待时间。

3、建立一个目录供编译出的文件存放
mkdir gcc-build-6.1.0

cd gcc-build-6.1.0

4、生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

5、编译
make -j4

-j4选项是make对多核处理器的优化,如果不成功请使用make
(注意:此步骤非常耗时,我虚拟机耗时近3小时; 实体机近80分钟,CPU基本是满的,内存也使用不少)

6、安装
make install(安装需要root权限)
查看安装
ls /usr/local/bin | grep gcc

7、重启然后查看gcc版本
gcc -v

8、这之后你就可以写个C++11的程序段进行测试
代码在此处省略。。。。。。
g++ -std=c++0x -o demoCpp11 demoCpp11.cpp
通过上面的步骤就可以完成对g++和gcc的升级

下面我们来解决开头提到的问题:
源码编译升级安装了gcc后,编译程序或运行其它程序时,有时会出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14′ not found的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。

(1). 运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。

(2). 执行以下命令,查找编译gcc时生成的最新动态库:
find / -name “libstdc++.so*”
将上面的最新动态库libstdc++.so.6.0.22复制到/usr/lib64目录下
cd /usr/lib64
cp /root/Downloads/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22  ./

(3). 删除原来软连接:
rm -rf libstdc++.so.6

(4). 将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.22 libstdc++.so.6

(5). 默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 输出有”GLIBCXX_3.4.14″ 了

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/202363.html<

(0)
管理的头像管理
上一篇2025-04-06 04:46
下一篇 2025-04-06 04:47

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注