CentOS/Linux 下升级GCC与G++-yzc888亚洲城系统官网

yzc888

  • 热门搜索:
  • yzc888亚洲城手机版
  • 雨林木风系统
  • 深度系统
  • 电脑公司系统
  • win7装机版
  • 教程分类
    当前位置:主页 > 教程咨询 > Linux教程

    CentOS/Linux 下升级GCC与G++

    来源:yzc888亚洲城┆发布时间:2018-11-21 16:00┆点击:

    yzc888亚洲城为您提供CentOS/Linux 下升级GCC与G++的文章咨询供您阅读,如何使用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

    tar -jxvf gcc-6.1.0.tar.bz2当然, 里面有所有的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的动态库导致的,win7装机版,将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" 了

    注意:网上的有一些文章在解决这个问题的时候会有这种方法,就是在网上找一个 libstdc++.so.6.0.22,然后使用这个来生成软连接,这样是不行的,一定要用自己编译的动态库,否则当你重启电脑的时候,你的CentOS桌面系统就会出问题,图形化界面都无法操作,就是因为你使用了一个来路不明的动态库导致的,解决办法就是使用自己编译的动态库或者系统自带的动态库来生成软连接,这样重启之后系统就会恢复了。

    Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx


    以上就是yzc888亚洲城给大家介绍的如何使用CentOS/Linux 下升级GCC与G++的方法了,如何使用CentOS/Linux 下升级GCC与G++的方法到这里也全部结束了相信大家对如何使用CentOS/Linux 下升级GCC与G++的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击yzc888亚洲城系统官网吧。

    本文来自yzc888亚洲城www.zhuangjiyuan.com如需转载请注明!

    Tag标签| RSS订阅 | 网站地图
    yzc888亚洲城系统之家提供win7装机版xp系统下载win7系统下载、最新Windows10系统下载,专为装机修机员奉上最好的软件、系统、U盘pe、程等平台
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场.本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,
    否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 粤ICP备15116662号