zoukankan      html  css  js  c++  java
  • centos 6 升级gcc

    今天又搞了一天,升级成功的那一刻,我都快感动得哭了。。。什么都不说了,都是泪。。。

    其实升级不难,真的一点都不难,重点是被自己人的文档坑了。。

    系统centos 6.3 32位 i386 自带gcc 4.4.6 升级到gcc 4.8

    参考:http://www.cnblogs.com/zhangtingkuo/archive/2013/04/06/3002982.html

        http://blog.csdn.net/magicyang87/article/details/7972169  

    1.下载源码包

    wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/gcc-4.8.0.tar.bz2
      
    解压:tar -jxvf  gcc-4.8.0.tar.bz2
     
    2.下载编译所需依赖库
    cd gcc-4.8.0 
    ./contrib/download_prerequisites 
    cd ..
     
    3.建立编译输出目录
    mkdir gcc-build-4.8.0
     
    4.进入此目录,执行以下命令,生成makefile文件
    cd  gcc-build-4.8.0
    ../gcc-4.8.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
     
    5.编译
    make -j4
    如果编译成功,则时间是比较长的,半个小时左右,所以如果你看它一直在输出没有立刻停下来,应该很开心!
     
    6.安装
    sudo make install
     
    7.切换GCC到新版
    确定新安装的GCC的路径,一般默认在/usr/local/bin下。可以先updatedb,然后locate gcc-4.8|tail找一下
    ls /usr/local/bin | grep gcc
    添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了
    update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/i686-pc-linux-gnu-gcc 40

    8.确认当前版本已经切换为新版
    gcc -v
    我这里用ssh远程的,发现版本没变,断开重练下,重新生成会话后发现变成了4.8了!
     
     
    看起来很顺有木有?!
    心酸的弯路不知道走了多少呢!
    以下是辛酸史。。
     =================万恶的分割线===========================
     首先是参考我们伟大的头儿的博客,http://blog.csdn.net/yanxiangtianji/article/details/8365630
     
    坑一、libstdc++-static
     
    他这过程也是参考各种博客集成而来,因为我网上看大部分第一步都是:yum install glibc-static libstdc++-static -y
    可其实centos的源上根本没有libstdc++-static,第一个是有的,请安装。
    坑爹的是,按照教程进行到编译make 之后,查看目录下的config.log 文件 ,搜索err,果然报 static-libstdc++的错!
    这下我可认真了,死都要把libstdc++-static装上。
    首先,换centos的源,换了163的源(http://www.cnblogs.com/peterpanzsy/archive/2013/04/07/3003387.html),不行,后来跑oschina上提问,大神说epel源上应该有,于是换epel的源,仍然屁都没有!
    于是去下rpm包,centos的软件包又不多,只能去下fedora的,一个家族的可以一试,epel源两者也通用的。
    rpm -ivh xxx.rpm
    结果出现依赖问题,于是下了这么一堆:
    可是安装第一个的时候又跟系统自带的4.4.6版本的冲突,尼玛的,yum remove又因为依赖关系不可行,总不能卸载自带的gcc 4.4.7吧,后面编译新的gcc还要靠它呢,不能冲动。
    今天上午就是乱搞,搞到报kernel的错,下午花了一个小时重装的系统。
     还有一个原因,大神误以为他当年6.3的centos是成功yum装上了libstdc++-static,于是我顺道重装的时候换成了centos6.3的版本,开始是6.4的其实。
     最后发现6.3的源上也没有这个神奇的东西。
    于是对安装libstdc++-static绝望了。。。放弃。

    坑二、三个依赖库是否要手动编译安装的问题。

    进入gcc目录,执行:

    ./contrib/download_prerequisites 

    下正确版本的载那三个依赖的库。

    大神说:可惜它不能自动配置编译安装,可以用我写的这个脚本来执行(假设当前是在contrib文件夹下):

    cd gmd
    ./configure
    make install
    cd ../mpfr
    ./configure
    make install
    cd ../mpc
    ./configure
    make install
    可是真的要装吗?尼玛装完之后显然会出问题的!至少在我的实践里。我在网上偶然间看到有人这么说了一句,放心上了。
    这么手动一装之后,编译gcc,直接报两个error停掉了,然后就出现第一步搜到的libstdc++-static错误。
     
    后来跳过手动装gmd  mpfr mpc之后,才执行了编译成功了。。。
     
    坑三、共享库路径的问题
     
    因为大神那篇博客里说以上的三个共享库不在系统默认路径下。
    我们可以搜一下:locate mpc|grep so
              确实有/usr/local/lib/libmpc.so
    可是当我在/etc/ld.so.conf.d下面加上/usr/local/lib路径后执行ldconfig又报错,估计下面没有找到合法的库文件吧。
    于是去掉,并且没有产生什么影响。
     
     
    我是真心不知道大神那个是怎么会那么复杂的。。
     
     
     
  • 相关阅读:
    349、两个数组的交集 | JS集合
    JS集合Set
    JS里的队列和链表
    使用链表指针获取JSON的节点值
    141、环形链表 | JS-链表
    83、删除排序链表中的重复元素 | JS-链表
    2、两数相加 | JS-链表
    事件循环与任务队列
    933、最近的请求次数 | JS-队列
    栈JS实现
  • 原文地址:https://www.cnblogs.com/peterpanzsy/p/3006838.html
Copyright © 2011-2022 走看看