在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 桌面]$

CentOS编译安装GCC 4.9.2成功的更多相关文章

  1. CentOS 6.4中升级编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 以及Kdump配置

    在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 今天在isocpp上看到"GCC 4.8.1 released, C++11 feature ...

  2. 转:在CentOS下编译安装GCC

    转:https://teddysun.com/432.html 在CentOS下编译安装GCC 技术  秋水逸冰  发布于: 2015-09-02  更新于: 2015-09-02  6519 次围观 ...

  3. CentOS6.5升级手动安装GCC4.8.2 与 CentOS 6.4 编译安装 gcc 4.8.1

    http://blog.163.com/zhu329599788@126/blog/static/6669335020161179259975 http://www.cnblogs.com/codem ...

  4. 在CentOS 6.4中编译安装gcc 4.8.1

    在CentOS 6.4中编译安装gcc 4.8.1 分类: C/C++ Linux/Unix2013-11-28 21:02 1877人阅读 评论(0) 收藏 举报 原文链接:http://www.c ...

  5. CentOS编译安装NodeJS+Express

    NodeJS是基于Chrome’s Javascript runtime,也就是Google V8引擎执行Javascript的快速构建网络服务及应用的平台,其优点有: 在CentOS编译安装Node ...

  6. 编译安装 gcc 4.9并验证使用

    编译安装 gcc 4.9并验证使用 1. 准备环境(GCC 编译器) centOS 6.3 cat /proc/version Linux version 2.6.32-279.el6.x86_64 ...

  7. nginx php-fpm安装配置 CentOS编译安装php7.2

    CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...

  8. CentOS6编译安装gcc高版本

    编译安装gcc高版本 因CentOS中gcc版本仅有4.4,故编译安装gcc高版本. 安装依赖库(如果你已安装过gcc低版本,可跳过这步) yum install glibc-static libst ...

  9. CentOS 7 安装 gcc 4.1.2

    CentOS 7 安装 gcc 4.1.2 0. 参考 在centOS7.2上编译gcc4.1.2 1. 安装了编译所需 yum groupinstall "Development Tool ...

随机推荐

  1. vs参数配置

    配置属性-常规: 输出目录:工程的输出目录,主要包括.exe..dll..lib文件,是工程最后想要的文件.vs2015位于解决方案的\x64\Debug下,vs2010,vs2005位于解决方案的D ...

  2. codeforces 628B B. New Skateboard (数论)

    B. New Skateboard time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  3. 点分治Day1

    树套树Day2暂且搁置...因为Day1的题我各种不会做... 唯一过了一道还是整体二分过的... 我们来一点愉快的算法,先不考虑数据结构这种骚东西了 毕竟还在发烧,就先码码这几天在搞的点分治吧 hx ...

  4. phpunit手动配置

    phpunit: #!D:\xampp\php\.\php.exe<?php/* PHPUnit * * Copyright (c) 2001-2013, Sebastian Bergmann ...

  5. 编写dockerfile

    参考:http://www.cnblogs.com/liuyansheng/p/6098470.html 一.dockerfile介绍: 是一种被Docker程序解释的脚本,Dockerfile由一条 ...

  6. mysql root密码忘记重置

    1.修改/etc/my.cnf文件 找到mysqld选项,增加子项skip-grant-tables 2.重新启动mysql服务 service mysqld restart 3.进入mysql 在s ...

  7. HDU1257(简单DP)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)

    一.什么是溢出攻击 首先, 溢出,通俗的讲就是意外数据的重新写入,就像装满了水的水桶,继续装水就会溢出,而溢出攻击就是,攻击者可以控制溢出的代码,如果程序的对象是内核级别的,如dll.sys文件等,就 ...

  9. python-queue知识点

    1.dict获取value dict.get(key_name)2.三元运算 res,err=stdout.read(),stderr.read() #三元运算 result=res if res e ...

  10. CentOS 7 搭建 LAMP

    一.安装httpd 1.yum install httpd -y 2.启动服务:systemctl start httpd 3.设置开机启动:systemctl enable 二.安装mariadb ...