【问题标题】:cc1plus: error: unrecognized command line option "-std=c++11" with g++cc1plus:错误:使用 g++ 无法识别的命令行选项“-std=c++11”
【发布时间】:2013-01-18 10:27:33
【问题描述】:

我正在尝试使用g++-std=c++11c++0x 标志进行编译。

但是,我得到了这个错误

cc1plus: error: unrecognized command line option "-std=c++11"

g++ --version

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

【问题讨论】:

  • 它是 -std=c++0x 与 g++
  • @stefan 不正确,两者都是可能的。您使用的是哪个 gnu 版本? C++11 仅在 >= 4.3 中受支持。
  • 运行 g++ --version 。然后在这里发布版本号。
  • 那太老了。该版本不支持 C++11。安装更高版本(如 4.7)以获得 C++11 支持。
  • 系统管理员可能安装了支持 C++11 的编译器,但没有将其设为默认编译器。您可以通过尝试在控制台窗口中自动完成命令 g++- 来检查安装了哪些特定版本的 GCC。

标签: c++ c++11 compiler-errors g++ std


【解决方案1】:

从你的 G++ 版本来看,你需要更新它。 C++11 仅在 G++ 4.3 之后才可用。最新版本是 4.7。

在 G++ 4.7 之前的版本中,您必须使用 -std=c++0x,对于更新的版本,您可以使用 -std=c++11

【讨论】:

  • 4.8.0 版本好用吗,还是 3 月份会有实际发布?
  • @chris 对不起,应该是 4.7,4.8 还在开发中。
  • @Antonijn,啊,我想我会等一两个月。我更喜欢稳定版本,或者任何你想使用的更好的词。
  • @chris 是的。或者你只是等待 linux mint 更新管理器通知你:)
  • @JoeCoderGuy 是的,这就是我正在使用的。
【解决方案2】:

引用gcc website:

C++11 功能作为“主线”GCC 编译器的一部分在 GCC 的 Subversion 存储库的主干以及 GCC 4.3 及更高版本中提供。要启用 C++0x 支持,请将命令行参数 -std=c++0x 添加到 g++ 命令行。或者,要启用除 C++0x 扩展之外的 GNU 扩展,请将 -std=gnu++0x 添加到您的 g++ 命令行。 GCC 4.7 及更高版本也支持 -std=c++11 和 -std=gnu++11。

所以您可能使用了不支持-std=c++11 的g++ 版本。请改用-std=c++0x

C++11 功能的可用性仅适用于 >= 4.3 版本。

【讨论】:

【解决方案3】:

你应该试试这个

g++-4.4 -std=c++0x or g++-4.7 -std=c++0x

【讨论】:

    【解决方案4】:

    我也遇到了同样的错误,用 -D 标志编译修复它,试试这个:

    g++ -Dstd=c++11

    【讨论】:

    • 为什么会被否决?答案有什么问题?为什么这不起作用?
    • @Veda 至少对我来说(在 gcc4.6.3 上),它肯定不是用 c++11 编译的。我用std::vector<int> v = {1, 2, 3}; 编写了一个简单的两行程序来进行测试,它抛出了各种各样的错误(尽管与没有标志不同的错误,很有趣)。
    • @Veda 虽然这个答案可以编译,但它很可能没有做任何可取的事情。 -D 命令行参数等效于在源代码中插入#define。所以这个命令就像有#define std c++11。然后你能想象std::string 将如何被重新定义为c++11::string 吗?一点用处都没有。
    猜你喜欢
    • 2015-02-05
    • 2016-08-09
    • 2015-11-12
    • 1970-01-01
    • 2016-02-10
    • 2017-01-22
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多