zoukankan      html  css  js  c++  java
  • CentOS6.6源码编译升级GCC至4.8.2

    升级前提

    源码编译需要至少要有一个可用的gcc编译器。

    可以用过yum自动安装或者手动下载rpm包安装。

    通过yum可以看到至少需要下面这些安装包,所以可以到许多rpm package站点中搜索下载相应的rpm包,不过版本要搞对了,这个yum搜出来的版本是针对4.4.7的。所以需要什么版本gcc就寻找什么版本对应的依赖包。现在的rpm站点都会说明这个软件包依赖哪些软件包,被哪些软件包依赖,非常方便,不过找起来还是比较耗时的。

    编译安装GCC4.8.2

    下载gcc4.8.2源码包

    1 curl -O ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz;

    首先需要下载gcc安装所依赖的mpc,mpfr,gmp包,gcc自带了一个脚本帮我们下载并建立好链接等gcc编译时一起编译,你也可以自己去下载依赖包。

    1 tar zxf gcc-4.8.2.tar.gz
    2 cd gcc-4.8.2 
    3 ./contrib/download_prerequisites

    打开上面的download_prerequisites可以看到,它首先下载了3个包,所以当发现脚本卡在下载的地方可能就是无法访问的原因了,这是需要去找一个新的下载地址,方法很简单,google文件名就可以找到很多。

    开始编译gcc

    mkdir gcc-build-4.8.2
    cd gcc-build-4.8.2
    ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
    make
    make install

    安装完成后如果发现gcc -v版本没有变化,就再执行以下启动脚本。

    1 source /etc/profile
    2 source ~/.bash_profile

    安装完之后的问题

    安装完之后虽然敲gcc g++ c++ 等版本都更新到了4.8.2但其实电脑里里面至少存在两个版本的gcc

    whereis或者where可以看到有多个gcc文件,which命令可以看到命令gcc对应的是usr/local/bin/gcc,而原来的gcc执行文件在/usr/bin/gcc,执行/usr/bin/gcc -v可以看到gcc的版本还是4.4,这虽然问题不大,但有些shell脚本或者Makefile中直接写的是gcc的绝对路径,所以很有可能会使用旧的gcc版本去编译,从而导致失败。所以还是需要将原来的gcc覆盖掉。最开始想的办法是将、usr/bin/gcc软链接到usr/local/bin/gcc,对于g++,c++等也做相似的处理

    这种方式看似解决了问题,但总觉得不靠谱,直到最近编译apache thrift发现还是不太对。所以考虑在安装gcc的时候是否可以指明安装路径。

    执行

    1 ./configure --help 

    可以看到确实是有这样的选项的

    所以只需要在configure的时候带上 --prefix=/usr 就可以将gcc编译安装到usr下了 

  • 相关阅读:
    HttpResponse对象、JsonResponse、StreamingHttpResponse、FileResponse
    for循环
    字符串功能
    (二)第一个Spring Boot工程
    (一)安装Docker和Kubernetes
    如何解决CHM打开乱码的问题
    [译]PyUnit—Python单元测试框架(1)
    正则表达式
    Java开发心得
    Shell获取文件后缀名
  • 原文地址:https://www.cnblogs.com/lvyahui/p/4776702.html
Copyright © 2011-2022 走看看