在Mac上使用Clang或GCC进行C++11编程

15

我在Mountain 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?


1
你需要这个http://libcxx.llvm.org/,它是LLVM项目的C++库,可以通过标志`-stdlib=libc++`调用。 - user1797612
谢谢 - 这正是我在类似问题上所需要的。 - suspectus
3个回答

8

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

看起来您正在使用Xcode。

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

错误消息告诉您的是,libc++在10.6及之前版本中不可用。


2
g++支持-std=c++11,但随Xcode附带的古老版本不支持它。 - Jonathan Wakely
2
不,我正在使用Qt Creator,我不知道如何更改“部署目标”,而且我正在使用Moutain Lion 10.8,因此libc++应该可用。 - Guillaume
找到了,如果我使用选项:-mmacosx-version-min=10.7,它可以在Clang上工作。但是现在当我执行它时,我的程序崩溃了,而在Linux上它却可以正常工作。 - Guillaume
我找到了它崩溃的原因,这个问题与它无关。 - Guillaume
3
在Qt Creator中你是在哪里改变了那个选项? - nkint

3

我在我的Mac上安装了gcc-4.7以使C++11能够运行。GCC在当前版本中对C++11的支持相当不错,所以这应该是一个不错的选择。

安装可以通过Homebrew完成,而且并不那么复杂(至少我能做到...)

如果您还没有安装Homebrew,请按照以下步骤进行:

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

现在运行。
brew doctor

并解决出现的任何问题(有关此事项的说明已在Homebrew文档中提供)。最后,安装当前版本的gcc:

brew install gcc

如果一切顺利,您应该能够访问g++-4.7,该编译器可以使用-std=c++0x


0

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

在libc++问题上,我会相信马歇尔的看法。


4
XCode中包含的GCC版本很旧,而且目前没有更新。由于许可证问题,Apple现在使用Clang并放弃使用GCC。 - Nikos C.
啊,那么这就解释了GCC的问题。我对OSX的情况不是很了解,因为我个人不是用户。 - user308323
那不起作用,我现在使用的版本是 gcc-4.2.1 - Guillaume
1
@Guillaume Ouch,我记得在gcc-4.3中添加了-std=c++0x。在gcc-4.7中,-std=c++11被添加为-std=c++0x的同义词。我认为gcc-4.2几乎没有任何来自C++11的东西。也许只有一些tr1库的东西,比如<array>等。 - emsr
2
-1 是在没有任何情况下发布的。 - Stephan Dollberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接