zoukankan      html  css  js  c++  java
  • CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始---

    CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0)

    没有便捷方式,

    yum update....   yum install 

    或者 添加yum 的 repo 文件 也不行, 只能更新到 4.4.7!

    then,  只能手动编译安装了,那么开始第一步下载源代码吧,GO!

    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版本供下载,最新版本已经有6.1.0啦.

    建议下载.bz2的压缩包,文件更小,下载时间更少.

    2、 下载供编译需求的依赖项

    参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

    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,相关优化选项可以移步至参考文献[2]。

    (注意:此步骤非常耗时,我虚拟机耗时近3小时; 实体机近80分钟,CPU基本是满的,内存也使用不少)

    6、 安装

    make install

    (安装需要root权限!)

    查看安装

    ls /usr/local/bin | grep gcc

    7、 重启,然后查看gcc版本

    gcc -v

    8、 写个C++11 特性的程序段 测试

    tryCpp11.cc 代码省略....

    g++ -std=c++11 -o tryCpp11 tryCpp11.cc

    9、升级gcc,生成的动态库没有替换老版本gcc的动态库

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

    9.1 运行以下命令检查动态库:

    strings /usr/lib64/libstdc++.so.6 | grep GLIBC

    从输出可以看出,gcc的动态库还是旧版本的。说明出现这些问题,是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库。

    9.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 ./

    9.3 删除原来软连接:

    rm -rf libstdc++.so.6

    9.4 将默认库的软连接指向最新动态库:

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

    9.5 默认动态库升级完成。重新运行以下命令检查动态库:

    strings /usr/lib64/libstdc++.so.6 | grep GLIBC

    可以看到 输出有"GLIBCXX_3.4.21" 了

    [注:摘抄自http://www.linuxidc.com/Linux/2015-01/112595.htm,  http://itbilu.com/linux/management/NymXRUieg.html, 原作者编译有出错过,但是我编译没有出错过]

    [参考1:http://www.tuicool.com/articles/FVN7jez]

    [参考2:http://blog.chinaunix.net/uid-14735472-id-5546560.html]

  • 相关阅读:
    包装类型
    int 和 Integer 有什么区别
    final finally finalize区别
    java关键字final 有什么用?
    String和StringBuffer、StringBuilder的区别是什么?
    String 类的常用方法都有那些?
    Vue官网教程-计算属性和监听器
    Vue官网教程-模板语法
    Vue官网教程-实例
    Vue官网教程-介绍
  • 原文地址:https://www.cnblogs.com/lzpong/p/5755678.html
Copyright © 2011-2022 走看看