您的位置:首页 > 运维架构 > Linux

《C++ Primer第五版》读书笔记(1)--redhat linux下安装gcc 4.8.2

2014-02-01 18:48 561 查看

13年的职业生涯中,做了7年半的C++编程,告别了大约5年半了.读本“新书”《C++ Primer英文版(第五版)》(2012年8月第一次印刷),重温下基本概念,再学点C++11的新特性,也是一大享受。

本blog只摘录新版有意思的知识点,以及一段时间不用又会糊涂的点(比如const的各种应用场景),要系统的学习,建议大家看看原书,还是写的很不错滴。

工欲善其事,必先利其器,本人所有的Redhat Enterprise Linux Server 6.4中的gcc版本为4.4.7,对c++ 11的支持还不够好,打算换成4.8.2,要使用对C++ 11的支持,在命令行中需要加上
-std=c++0x,在gcc4.7之后也可以使用-std=c++11.


本文主要描述如何安装gcc 4.8.2,主要参考了这篇文章:http://blog.csdn.net/dyllove98/article/details/8917485


 

以下操作均在root用户下.


1.首先下载新版本的GCC到/usr/local/src:



[root@RHVM ~]#cd /usr/local/src

[root@RHVM ~]#wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2[/code] 

2.下载编译所需依赖库

tar -jxvf gcc-4.8.2.tar.bz2


cd gcc-4.8.2


./contrib/download_prerequisites


3.建立编译输出目录


cd ..


mkdir gcc-build-4.8.2


4.进入此目录,执行以下命令,生成makefile文件

cd  gcc-build-4.8.2


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


5.编译

make


如果编译成功,则时间是比较长的,半个小时左右,所以如果你看它一直在输出没有立刻停下来,应该很开心!

6.安装

sudo make install

7.切换GCC到新版

确定新安装的GCC的路径,一般默认在/usr/local/bin下。先updatedb:

[root@RHVM ~]# updatedb

[root@RHVM bin]# ls /usr/local/bin | grep gcc

gcc

gcc-ar

gcc-nm

gcc-ranlib

x86_64-unknown-linux-gnu-gcc

x86_64-unknown-linux-gnu-gcc-4.8.2

x86_64-unknown-linux-gnu-gcc-ar

x86_64-unknown-linux-gnu-gcc-nm

x86_64-unknown-linux-gnu-gcc-ranlib

添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了

update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.8.2 40

8.确认当前版本已经切换为新版

gcc -v

我这里用ssh远程的,发现版本没变,断开重练下,重新生成会话后发现变成了4.8.2了!

[root@RHVM ~]# gcc -v

Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper

Target: x86_64-unknown-linux-gnu

Configured with: ../gcc-4.8.2/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

Thread model: posix

gcc version 4.8.2 (GCC)

 


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息