【问题标题】:C++11 on Mac with Clang or GCC带有 Clang 或 GCC 的 Mac 上的 C++11
【发布时间】:2012-12-07 03:33:33
【问题描述】:

我在 Moutain Lion 上安装了 Xcode 4.5.2,并且安装了最新的“命令行工具”,但是当我尝试使用 g++clang++(以及选项 -std=c++11 -stdlib=libc++)进行编译时出现错误. 与g++

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

clang++

clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later)

它在一个 Qt 项目中。

那么如何在我的 Mac 上使用 C++11 呢?

【问题讨论】:

  • 你需要这个libcxx.llvm.org,它是被标志-stdlib=libc++调用的llvm项目的c++库
  • 谢谢 - 这正是我遇到类似问题所需要的。

标签: c++ xcode c++11 g++ clang


【解决方案1】:

如您所见,g++ 不支持这些命令行选项。

听起来你正在使用 Xcode。

对于clang,您应该查看项目设置,并确保“部署目标”设置为10.7(或10.8)

错误消息告诉您的是 libc++ 不适用于 10.6 及之前的版本。

【讨论】:

  • g++确实支持-std=c++11,但是Xcode自带的古版不支持
  • 不,我正在使用 Qt Creator,但我不知道如何更改“部署目标”,而且我使用的是 Moutain Lion 10.8,所以应该可以使用 libc++
  • 找到了,如果我有选择的话,它可以和 Clang 一起工作:-mmacosx-version-min=10.7 但是现在我的程序在我执行它时崩溃了,而它在 Linux 上工作
  • 我发现是什么崩溃了,和这个问题没有关系
  • 您在 qtcreator 中哪里更改了该选项?
【解决方案2】:

我在我的 Mac 上安装了 gcc-4.7 以使 C++11 工作。当前版本的 GCC 在支持 C++11 方面相当出色,所以这应该是一个公平的选择。

安装可以由Homebrew完成,并不复杂(至少我能做到……)

如果您还没有 Homebrew,请安装它:

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

现在运行

brew doctor

并解决出现的任何问题(在 hombrew 文档中为此编写了一些内容)。最后,安装当前的 gcc:

brew install gcc

如果一切顺利,您应该可以访问g++-4.7,它允许-std=c++0x

【讨论】:

    【解决方案3】:

    如果c++11 不起作用,请尝试-std=c++0x。对 -std=c++11 选项的支持在 GCC 中相对较新,您可能没有足够新的版本。

    在 libc++ 问题上我相信 Marshall。

    【讨论】:

    • XCode 中的 GCC 非常旧,没有更新。由于许可问题,Apple 现在正在使用 Clang 并放弃 GCC。
    • 啊,那可以解释 GCC 的问题。我不知道 OSX 发生了什么,我个人不是用户。
    • 那不行,我现在的版本是gcc-4.2.1
    • @Guillaume Ouch,-std=c++0x 已添加到 gcc-4.3 IIRC。在 gcc-4.7 中,添加了 -std=c++11 作为 -std=c++0x 的同义词。我认为 gcc-4.2 几乎没有任何来自 C++11 的东西。也许一些 tr1 库的东西,如 等。
    • -1 表示在没有任何线索的情况下发帖。
    猜你喜欢
    • 2011-11-02
    • 2015-09-12
    • 2012-08-09
    • 2021-05-08
    • 1970-01-01
    • 2012-04-20
    • 2013-03-21
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多