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

 
CentOS6.5升级手动安装GCC4.8.2

一、简易安装

操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2

不能通过yum的方法升级,需要自己手动下载安装包并编译

1.1 获取安装包并解压

wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
tar -jxvf gcc-4.8.2.tar.bz2

当然,http://ftp.gnu.org/gnu/gcc 里面有所有的gcc版本供下载,最新版本已经有4.9.2啦.

1.2 下载供编译需求的依赖项

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

cd gcc-4.8.0 
./contrib/download_prerequisites 

1.3 建立一个目录供编译出的文件存放

mkdir gcc-build-4.8.2
cd gcc-build-4.8.2

1.4 生成Makefile文件

../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

1.5 编译(注意:此步骤非常耗时)

make -j4

-j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。

我在安装此步骤时候出错,错误描述:

 
compilation terminated.
make[5]: *** [_gcov_merge_add.o] 错误 1
make[5]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc'
make[4]: *** [multi-do] 错误 1
make[4]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
make[3]: *** [all-multi] 错误 2
make[3]: *** 正在等待未完成的任务....
make[3]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
make[2]: *** [all-stage1-target-libgcc] 错误 2
make[2]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make[1]: *** [stage1-bubble] 错误 2
make[1]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
make: *** [all] 错误 2
 

大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和 x86_64-unknown-linux-gnu/libgcc

根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):

sudo yum -y install glibc-devel.i686 glibc-devel

过程中CPU基本满载:

1.6、安装

sudo make install

二、验证安装

重启,然后查看gcc版本:

gcc -v

尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr

 
 1 //tryCpp11.cc
2 #include <iostream>
3 #include <memory>
4
5 int main()
6 {
7 std::shared_ptr<int> pInt(new int(5));
8 std::cout << *pInt << std::endl;
9 return 0;
10 }
 

验证文件:

g++ -std=c++11 -o tryCpp11 tryCpp11.cc
./tryCpp11 --------------------------------------------------------------------------------------------------------------------  CentOS 6.4 编译安装 gcc 4.8.1

今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,非常兴奋。终于有一个全面支持C++11语言特性的编译器了!

当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了。另外,之前也有消息说Clang功能上也100%支持C++11了,但是内部还在做测试,Clang3.3的release版据说6月5号正式发布,最近对于C++来说大事真多啊,很期待!

今天下午看到这个消息,晚上就实在忍不住了,赶紧把最新的gcc下载下来编译安装起来,下面介绍下安装步骤:

安装之前,还是提醒下大家:一些基本的准备工作我就不说了,比如得装个Linux(CentOS,Ubuntu等等),然后装上基本的编译环境,用较老的编译环境编译新的编译器,这叫自举(bootstrap)。如果编译的过程,提示出错,就按照提示去把环境装好,不再详细说明。

1、下载gcc 4.8.1源码包:

http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2

我是虚拟机里面装的Linux,我嫌wget太慢,所以自己在Windows上用迅雷下好,然后共享到Linux中。

2、解压:

tar -jxvf gcc-4.8.1.tar.bz2

3、下载编译所需的依赖包:

这个步骤有两种方式完成:

a) 如果Linux有网络连接,直接这样:

cd gcc-4.8.1

./contrib/download_prerequisites

cd ..

b) 如果Linux没有网络连接(我主机和虚拟机是Host-only,不能联网,所以另外想办法),则用Windows上网下载这几个包:

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

有人问,一定要下载几个版本吗?下载最新的版本行不行?我没试过,也不知道,我是按照gcc-4.8.1/contrib/download_prerequisites脚本里面的版本下载的。既然里面已经说了这几个版本,那我就严格按照它的要求来做。

然后解压并移动到gcc-4.8.1下面:

tar -xjf gmp-4.3.2.tar.bz2

tar -xjf mpfr-2.4.2.tar.bz2

tar -xzf mpc-0.8.1.tar.gz

mv gmp-4.3.2 gcc-4.8.1/gmp

mv mpfr-2.4.2 gcc-4.8.1/mpfr

mv mpc-0.8.1 gcc-4.8.1/mpc

这样的做法好处是,不用单独编译gmp、mpfr和mpc三个包,放在gcc源码下面一起编译(事实上这也是gcc-4.8.1/contrib/download_prerequisites脚本的做法,个人感觉更简洁些)。

4、新建目录用于存放编译结果:

mkdir gcc-build-4.8.1

5、进入新目录,并执行configure命令,产生makefile:

cd gcc-build-4.8.1

../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

具体选项不多解释,大家可以自己查看,我只用到c和c++,所以只编译这两种语言的编译器。

6、编译:

make -j4

我是i5四核,所以开4个线程同时编译,要是有8核就更爽了~我在虚拟机里面花了30分钟不到的时间,不算太慢了。

7、安装:

sudo make install

8、大功告成,检查版本:

g++ --version

g++ (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

【参考文章】:

http://rritw.com/a/caozuoxitong/OS/20130407/335815.html

http://www.lainme.com/doku.php/blog/2012/06/%E5%9C%A8centos_5%E4%B8%8A%E7%BC%96%E8%AF%91gcc_4.7

http://www.cnblogs.com/chuncn/archive/2010/10/15/1851853.html

http://blog.csdn.net/bokee/article/details/5380044


CentOS6.5升级手动安装GCC4.8.2 与 CentOS 6.4 编译安装 gcc 4.8.1的更多相关文章

  1. centos 7.0 编译安装php 7.0.3

    php下载页面 http://cn2.php.net/downloads.php 7.0.3多地区下载页面 http://cn2.php.net/get/php-7.0.3.tar.gz/from/a ...

  2. centos 7.0 编译安装php 5.6.7

    编译安装php参考资料 MySQL PHP API http://dev.mysql.com/doc/apis-php/en/index.html nginx + php +mysql 最简单安装 官 ...

  3. CentOS 6.4编译安装和部署Zabbix 2.0版本监控(中文)

    [一].zabbix简介 zabbix是一个基于web界面的提供分布式系统监视以及网络监视功能的企业级开元解决方案 zabbix由2部分构成,zabbix_server和可选组件zabbix_agen ...

  4. CentOS 7.0编译安装Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    准备篇: CentOS 7.0系统安装配置图解教程 http://www.osyunwei.com/archives/7829.html 一.配置防火墙,开启80端口.3306端口 CentOS 7. ...

  5. CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3

    http://www.osyunwei.com/archives/8867.html 一.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables #编辑防火墙配置 ...

  6. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13

    CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.132013-10-24 15:31:12标签:服务器 防火墙 file 配置文件 written 一.配置好I ...

  7. CentOS 6.2编译安装Nginx1.2.0+MySQL5.5.25+PHP5.3.13+博客系统WordPress3.3.2

    说明: 操作系统:CentOS 6.2 32位 系统安装教程:CentOS 6.2安装(超级详细图解教程): http://www.osyunwei.com/archives/1537.html 准备 ...

  8. CentOS 6.4编译安装淘宝web服务器Tengine

    Tengine 是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商城 ...

  9. CentOS 6.8编译安装httpd2.2.31+MySQL5.6.31+PHP5.3.27

    CentOS 6.8编译安装httpd2.2.31+MySQL5.6.31+PHP5.3.27   说明:   操作系统:CentOS 6.8 32位 准备篇: 一.系统约定    软件源代码包存放位 ...

随机推荐

  1. 【dp】bzoj1613: [Usaco2008 Jan]Running贝茜的晨练计划

    还记得这是以前看上去的不可做题…… Description 奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1<=N<=10,000)分钟的晨跑.在 ...

  2. C++实现简易单向链表

    #include <iostream> #include <stdlib.h> #include <stdbool.h> using namespace std; ...

  3. Web安全XSS、CSRF和SQL注入

    SQL注入 SQL注入是以用户的输入作为sql语句的一部分,如后端接收到用户的请求数据后,不经过数据转义,就把数据拼接到SQL中执行,容易导致SQL的语义被篡改,即受到攻击了. 解决办法是对接收的数据 ...

  4. 【php】 自带的过滤机制

    <?php print_r(filter_list()); ?> 输出类似: Array ( [0] => int [1] => boolean [2] => float ...

  5. python爬虫基础02-urllib库

    Python网络请求urllib和urllib3详解 urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urlli ...

  6. Linux Shell脚本教程:30分钟玩转Shell脚本编程

    http://c.biancheng.net/cpp/shell/ Linux在线体验: http://compileonline.com/ Linux命令查询: http://man.linuxde ...

  7. 【HIHOCODER 1067】最近公共祖先·二(LCA)

    描述 上上回说到,小Hi和小Ho用非常拙劣--或者说粗糙的手段山寨出了一个神奇的网站,这个网站可以计算出某两个人的所有共同祖先中辈分最低的一个是谁.远在美国的他们利用了一些奇妙的技术获得了国内许多人的 ...

  8. 设置vim配置文件使得tab为4个空格

    1 set ts=4 2 set expandtab 3 set autoindent

  9. apache2虚拟主机实现一个服务器绑定多个域名

    1.apache2的配置 首先要配置好apache2,如果未配置,请参考我之前的博文:lamp的配置 2.域名的解析 将全部域名的www和@的A记录解析到云服务器的IP 3.虚拟主机的配置 1.配置h ...

  10. TOJ 2419: Ferry Loading II

    2419: Ferry Loading II  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Subm ...