先解释一下,为什么从09年开始就一直使用ubuntu10.10,大三的时候开始接触虚拟机VmWare使用Ubuntu。那时不懂什么是LTS,在这个虚拟机上安装了vim,g++,jdk,mysql,xlamp,python2.7,curl,go,adobe,ibus,chrome,firefox,qq,msn,openfetion,open office,msn等所以就不方便升级到12.04。
P.S.我不喜欢12.04的新风格。
进入正题
搜索“ubuntu 升级到gcc4.7”
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get install gcc-4.6 sudo apt-get install g++-4.6
这个方法在我的电脑报错,找不到源。
之后我就下载了gmp,mpc,mpfr,g++4.7依次安装,但是在安装g++4.7的时候,报错目标文件后缀不识别。
一直没有安装成功,我有强迫症吧,上个周末没有搞好,这个周末继续琢磨。
折腾了一上午,之后sudo apt-get install gcc-4.6-base,提示已经安装。
运行g++ -std=c++0x 就可以支持部分C++11特性,发现g++还是4.4,应该就是g++4.6支持的部分C++11特性。
至此终于可以实验C++的特性了。
简单测试一下,g++4.6中
支持:
1、C++11不需要重复生成模板实例的升级
extern template class std::vector<MyClass>;
2、C++中的自动类型推断
auto i = 0;//i的类型自动推断0的类型:int
3、std::unordered_map等
不支持:
for循环的范围遍历
int my_array[5] = {1, 2, 3, 4, 5}; for (int &x : my_array) { x *= 2; }