LINUX下编译c++11的代码

 C++11,(即ISO/IEC 14882:2011),是目前的C++编程语言的最新正式标准。它取代了第二版标准(第一版公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。新的标准包含核心语言的新机能,而且扩展C++标准程序库。C++11新标准由C++标准委员会于2011年8月12日公布,并于2011年9月出版。此次标准为C++98发布后13年来第一次重大修正。

    像C++这样的编程语言,通过一种演化的的过程来发展其定义。这个过程不可避免地将引发与现有代码的兼容问题,在C++的发展过程中偶尔会发生。不过根据Bjarne Stroustrup(C++的创始人并且是委员会的一员)表示,新的标准将几乎100%兼容于现有标准。关于C++11的新特性和一些版本变更请看:C++11-维基百科

    目前最新版本的GCC/G++是4.8,新版本的GCC支持最新的C++11标准,十分值得去使用&学习。 下面让我们在Ubuntu12.04 LTS用上GCC最新版本,去体验C++11新标准带来的东西吧!

首先非源码编译式安装:

  1. sudo add-apt-repository ppa:ubuntu-toolchain-r/test  
  2. sudo apt-get update  
  3. sudo apt-get install gcc-4.8   
  4. sudo apt-get install g++-4.8  

等GCC/G++下载并安装完以后,测试是否安装成功:

  1. gcc-4.8 -v  
  2. g++-4.8 -v  

如果显示版本号表示安装成功:


安装成功后我们如果要使用gcc-4.8和g++-4.8来编译的话,我们就得把gcc改为gcc-4.8,g++同理,改为g++-4.8来进行编译。

此时使用gcc -v查看默认版本,为4.6版本:


如果你想直接使用gcc-4.8而不改变编译时gcc改为gcc-4.8的话,我们就可以更改一下gcc的软链接:

  1. sudo rm /usr/bin/gcc  
  2. sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc  
  3. sudo rm /usr/bin/g++  
  4. sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++  
现在我们用gcc -v来测试就能发现变为了4.8了!

既然GCC-4.8使用了最新的C++11标准,但是我们为什么还是提示错误呢?解决方法如下:
在编译的时候添加-std=c++11选项即可正常编译C++11标准的代码!


  1. //第一种,直接包含在源程序文件中,如第一行代码所示
  2. #pragma GCC diagnostic error "-std=c++11"
  3. #include <iostream>
  4. using namespace std;
  5. int main(int argc,char **argv)
  6. {
  7. cout<< "hello world!"<< endl;
  8. auto i= 10;
  9. cout<<i<< endl;
  10. return 0;
  11. }
  12. //第二种方法,可以直接取别名方法 如下所示:
  13. alias g++= 'g++ -std=c++11'
  14. g++ hw.cpp -o hw

猜你喜欢

转载自blog.csdn.net/weixin_41940752/article/details/80925796