【问题标题】:How can I compile under C++11 standard in Ubuntu? [closed]如何在 Ubuntu 中按照 C++11 标准编译? [关闭]
【发布时间】:2012-01-14 06:43:10
【问题描述】:

我如何在 Ubuntu 11.04 的 C++11 standard 下使用最新的编译器编译 C++ 程序,最好使用发行版中的编译器,即预构建包。

【问题讨论】:

  • 从技术上讲,这不是一个编程问题。 “我如何安装 X”属于 SuperUser 或类似的地方。
  • 您可以看到Ubuntu 12.04 alpha 包含GCC 4.6.1,下面的Hauleth 说它具有您想要的功能。您可以通过一些黑客操作(我不知道 Ubuntu)在您自己的系统上安装该软件包,或者您可以只安装 12.04 alpha。
  • @WarrenP 常见问题解答明确指出“程序员常用的软件工具”并非题外话。这是有道理的,程序员将拥有最多的编译器安装经验,而不是系统管理员。
  • 所以apt-get 和添加新的 apt 源现在是程序员的事了?
  • @Warren P:可能。如果有人问是否有支持 X 的库,回答类似“FooLib 支持;在 Ubuntu 上使用 sudo apt-get install foo-lib 获取它”是合理的。在这种情况下,OP 询问至少间接可用的最新编译器,而不是询问“如何安装 gcc 4.6?”答案是建议使用 gcc 4.6,这是主题。

标签: c++ gcc ubuntu c++11 llvm


【解决方案1】:

GCC 4.6 提供了大部分 C++11 特性。只需添加标志-std=c++0x 并且可以使用基于范围的for 循环、强枚举、UTF 字符串等。对于给定版本的GCC 中可用的功能列表,可以查看http://gcc.gnu.org/projects/cxx0x.html

【讨论】:

  • 不过,他想知道在哪里可以获得它的二进制分发版。
  • GCC 4.6 是 Ubuntu 11.04 中 GCC 的默认版本,之前的版本基于 GCC 4.5,还具有一些特性(如强类型枚举)。
  • 编译时只需指定 c++11 标志 (-std=c++11)。 man 说“对 C++11 的支持仍处于试验阶段,在未来的版本中可能会以不兼容的方式发生变化。”但你可以试试。例如:root@ubuntu:~/NetBeansProjects/pointers_string# g++ -std=c++11 -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.od -o build/Debug/ GNU-Linux-x86/main.o main.cpp root@ubuntu:~/NetBeansProjects/pointers_string# g++ -o dist/Debug/GNU-Linux-x86/pointers_string build/Debug/GNU-Linu x-x86/main.o
  • 是否有相当于设置标志的环境变量?
  • 我不这么认为,但是您可以编写 Makefile 来添加该标志。更多信息请查看stackoverflow.com/questions/21221411/…
【解决方案2】:

2017 年更新:GCC 7 及更高版本似乎完全符合 C++ 2011。下面的其余答案是在 GCC 4.7 时代写的,在 2011 年写的时候是正确的。

严格来说,我无法为您提供任何 100% 兼容 C++ 2011 的开源编译器,因为目前还没有任何 100% 的。

看起来您现在应该继续使用 GCC,并且 GCC 4.6 二进制文件包含在最近的 Ubuntu 发行版中。 C++ 2011 在 GCC 4.6 中不完整,但包含 lot of 2011 stuff,比 Clang+llvm 更多。它完成了超过 90% 的 C++ 2011 功能。 GCC 4.7 包含更多内容,但我在 Ubuntu 11.x 中还没有看到 gcc-4.7 二进制包,但您可以查看over here 以获取在 ubuntu 上获取 gcc 4.7 二进制文件的另一种方法,或尝试AskUbuntu,一个stackexchange 为 ubuntu 提供支持的网站。

根据this pageClang+llvm 还没有提供完全符合 C++ 2011 标准的要求,而且我还没有完成确切的数学计算,但我在 Clang 上看到了比 Gcc 更多的“否”条目。

【讨论】:

  • 感谢您的回答。通过计算支持的提案,GCC 4.7 似乎是最佳选择,GCC 4.6 和 LLVM 3.0 大致相等。与发行版的工具链一起编译 GCC 4.7 似乎是最简单的入门选择,但正如您提到的,这里不应继续讨论。
  • 从源代码构建工具链对我来说似乎与编程足够相关。安装一组 .deb 或 .rpm 二进制文件似乎与我无关。
猜你喜欢
  • 2019-12-16
  • 2019-05-28
  • 1970-01-01
  • 2021-01-02
  • 2012-08-29
  • 2012-11-20
  • 2017-04-29
  • 2022-11-04
  • 1970-01-01
相关资源
最近更新 更多