gcc 5.0 是第一个完全支持C++14的编译器,Windows上可以安装mingw版的,在sourceforge 上有下载,安装也比较方便。在Linux上安装的话需要首先安装一些依赖库。在Ubuntu12.04 lts默认安装的是gcc4.6.3,其实该版本也支持一些c++11的特性,可以通过增加“-std=c++0x" 编译选项来使用这些特性,但是对多线程库的支持较差,4.6以上大版本是通过ppa来安装的,因此需要添加ppa repository 。
下面就来看一下安装步骤(仅适合ubuntu12.04 ~ 14.10):
关键步骤(以下步骤是必须的):sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 # gcc可以不升级依然用4.6,只装g++5
sudo apt-get install g++-5
sudo apt-get install gcc-5-multilib # gcc可以不升级依然用4.6,只装g++5
sudo apt-get install g++-5-multilib
sudo apt-get install g++-5-doc # 可选
可选(之后g++命令默认指向g++5.x.x)
sudo update-alternatives --config g++
根据提示选择默认的版本
现在就可以使用了,通过g++ -v 命令可以查看当前gcc或者g++的版本, 在我的系统上显示如下(省略了一些):
......
Thread model: posix
gcc version 5.4.0 20160603 (Ubuntu 5.4.0-3ubuntu1~12.04)
......
安装完成后还有一个小问题就是gdb调试器还是比较老的7.4,而一些IDE在生成makefile时, 默认生成的debug版本都是以-g3或者-g来添加调试信息的,实际上从gcc4.8开始-g产生的是新的DWARF4格式的调试信息, 不是旧的DWARF2格式,这导致调试程序时gdb无法使用DWARF 4的调试信息从而给调试带来麻烦,使用eclipse cdt的同学要特别注意!
正确解决办法是:把-g或者-g3 改为-gdwarf-2就可以了,使用eclipse cdt的同学要特别注意!
附ubuntu12.04 软件源, 163是比较我一直使用比较快的, 个人感觉比cn99和sohu好点
deb http://mirrors.163.com/ubuntu/ precise main restricted
deb-src http://mirrors.163.com/ubuntu/ precise main restricted
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb http://mirrors.163.com/ubuntu/ precise universe
deb-src http://mirrors.163.com/ubuntu/ precise universe
deb http://mirrors.163.com/ubuntu/ precise-updates universe
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe
deb http://mirrors.163.com/ubuntu/ precise multiverse
deb-src http://mirrors.163.com/ubuntu/ precise multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted
deb http://mirrors.163.com/ubuntu/ precise-security universe
deb-src http://mirrors.163.com/ubuntu/ precise-security universe
deb http://mirrors.163.com/ubuntu/ precise-security multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-security multiverse
deb http://extras.ubuntu.com/ubuntu precise main
deb-src http://extras.ubuntu.com/ubuntu precise main