C Programer  - 讨论区

标题:在CentOS 6环境中安装gcc-c++ 4.8

2014年01月29日 星期三 17:17

CentOS自带的gcc编译器是4.4版本,算是比较古老的一个版本了,不支持现代的C++11标准,如果我们想要使用C++11标准的新特性,就需要安装一个新版本的gcc-c++编译器。但自行编译安装编译器和libstdc++是一件非常费时费力的事情,远比安装一个apache复杂的多。所以我还是倾向于使用上游编译好的PRM来安装。

devtoolset是Redhat提出的一种新的软件多版本共存方案。多个版本的gcc可以并存,并且不会引起rpm安装包的冲突。

devtoolset 2.0版本提供如下软件:

  • gcc/g++/gfortran - GNU Compiler Collection - version 4.8.1
  • gdb - GNU Debugger - version 7.6.34
  • binutils - A GNU collection of binary utilities - version 2.23.52
  • elfutils - A collection of utilities and DSOs to handle compiled objects - version 0.155
  • dwz - DWARF optimization and duplicate removal tool - version 0.11
  • systemtap - Programmable system-wide instrumentation system - version 2.1
  • valgrind - Tool for finding memory management bugs in programs - version 3.8.1
  • oprofile - System wide profiler - version 0.9.8
  • eclipse - An Integrated Development Environment - version 4.3(Kepler)

gcc-c++ 4.8.1版本已经可以完整的支持C++ 11标准了,而且在编译速度、错误提示的可读性方面都有很大的改进。

安装devtoolset 2.0首先需要配置yum的软件源:

$ sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo

然后就可以安装了:

$ sudo  yum install devtoolset-2

devtoolset包括的软件包非常多,安装过程需要一段时间。安装完毕后,可以通过如下指令将开发环境切换到devtoolset 2.0:

$ scl enable devtoolset-2 bash

然后就可以通过g++ -v 来查看编译器的版本了。下面的实例代码可以检测编译器是否支持C++11特性:

#include <iostream>
#include <string>
#include <array>

using namespace std;

int main(int argc,char **argv) {
    auto  i=100;
    auto s="123qwe";
    cout << i << s << endl;
    array<int,3> ary={1,2,3};
    for(auto x : ary) {
        cout << x << endl;
    }
}

编译指令:

$ g++ -o c11 c11.cpp -std=c++11

如果可以正常编译运行,那么我们的新版本编译器就算是安装成功了。

参考资料:

http://linux.web.cern.ch/linux/devtoolset/

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号