zoukankan      html  css  js  c++  java
  • CentOS编译安装GCC 4.9.2成功

    在Linux上编译安装gcc是个寻烦恼的活,对于像我这样习惯于在Windows上面使用二进制安装包的人来说,自已编译安装gcc是个相当大的挑战,今天直接挑战最新版的gcc,是4.9.2版本的,做之前查阅了大量的资料,本次安装使用的系统是CentOS6.4,自带的gcc是4.4.7版本,具体折腾过成如下:

    准备工作,

      到GNU官方FTP下载GCC的源码包gcc-4.9.2.tar.gz.

      下载下面三个依赖的安装包,这三个包的版本在gcc-4.9.2/contrib/download_prerequisites脚本文件中有指明,按这个里面指定的版本下载即可:

        ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2

        http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

        http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz

    编译:

      首先是编译安装三个依赖库,按以下步骤编译安装:

        一:解压gmp-4.3.2.tar.bz2到自已指定的一个目录比如/home/[你的用户名]/gmp-4.3.2,另外在建一个/home/[你的用户名]/gmp-build目录,并进入这个目录,在终端里执行../gmp-4.3.2/configure --prefix=/usr/local/gmp-4.3.2,--prefix表示后面将要安装到的目标位置,后面编译gcc时也要用到这个路径,执行完成之后在当前目录生成makefile文件,这时可以执行make(开始编译),接着执行make test(编译后安装前的测试,为了省时间,我一般没有执行这一步),最后执行make install(正式开始把编译好的文件安装到--prefix指定的位置).

        二:安装mpfr-2.4.2.tar.bz2,方法同上,不过执行configure的具体参数是这样的../mpfr-2.4.2/configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2,它是要依赖前面的gmp.

        三:安装mpc-0.8.1.tar.gz方法同上,不过执行configure的具体参数是这样的../mpc-0.8.1/configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2

      上面三个依赖库安装好后,就可以开始编译安装gcc-4.9.2.tar.gz了:

        四:其实步骤同安装上面三个依赖库是一样的,还是执行configure的参数不同../gcc-4.9.2/configure --prefix=/usr/local/gcc-4.9.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1,这里的参数是把上面的三个依赖库加上去了,执行完成之后同样是生成makefile文件.

        五:执行make -j4  (-j4是表示启动四线程,可以充分发挥四核CPU的性能,网上有人用四核CPU开启4线程编译只花了半个小时,不过我的电脑配置差,只执行的make花了三个多小时间,呵呵).

        六:make test (我为了省时间,基本上省略这一步了)

        七:make install (开始安装)

        至此就算编译安装完成了.

      其实在上面执行第五步的时候,会遇到这样的错误:“configure: error: cannot compute suffix of object files: cannot compile”,网上调查得到的原因是找不到上面三个依赖的lib位置,所以要在执行第五步之前,先执行这样一条指令export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-4.3.2/lib:/usr/local/mpc-0.8.1/lib:/usr/local/mpfr-2.4.2/lib,这样就把三个依赖库就加入到了环境变量中,再编译的时候就不会报错了.

      装完后,查看一下版本

    [guo@CentOS 桌面]$ g++49 -v
    使用内建 specs。
    COLLECT_GCC=g++49
    COLLECT_LTO_WRAPPER=/usr/local/gcc-4.9.2/libexec/gcc/i686-pc-linux-gnu/4.9.2/lto-wrapper
    目标:i686-pc-linux-gnu
    配置为:../gcc-4.9.2/configure --prefix=/usr/local/gcc-4.9.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
    线程模型:posix
    gcc 版本 4.9.2 (GCC)
    [guo@CentOS 桌面]$ gcc49 -v
    使用内建 specs。
    COLLECT_GCC=gcc49
    COLLECT_LTO_WRAPPER=/usr/local/gcc-4.9.2/libexec/gcc/i686-pc-linux-gnu/4.9.2/lto-wrapper
    目标:i686-pc-linux-gnu
    配置为:../gcc-4.9.2/configure --prefix=/usr/local/gcc-4.9.2 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
    线程模型:posix
    gcc 版本 4.9.2 (GCC)
    [guo@CentOS 桌面]$

  • 相关阅读:
    通过user-agent判断h5页面是在哪个手机App(QQ、微信、支付宝)下打开的
    vscode格式化插件
    简单直接,“NODE_ENV”总结
    NativeScript又一个Hybrid技术(附与Weex,ReactNative比较)
    ReactNative开发中遇到的问题记录
    两个在线编辑网站runjs和jsbin
    go 如何单测
    go语法-type等
    go语法-结构体和接口-细节
    解决 Webstorm 每次更新 Git 代码都要输入密码的问题
  • 原文地址:https://www.cnblogs.com/guobbs/p/4394957.html
Copyright © 2011-2022 走看看