MacOS的“-std = gnu ++ 0x”选项

时间:2012-05-07 10:43:09

标签: c++ xcode gcc c++11 osx-lion

我正在尝试编译一个使用

的CMake项目
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-Wall -std=gnu++0x")

在MacOS X Lion下的CMakeLists.txt文件中。我已经安装了XCode 4.2.1。但是编译器失败了:

cd something/src/lib && /usr/bin/c++   -Dlib_ginacra_EXPORTS -Wall -std=gnu++0x -fPIC   -o CMakeFiles/lib_ginacra.dir/utilities.cpp.o -c something/src/lib/utilities.cpp
cc1plus: error: unrecognized command line option "-std=gnu++0x"

编译器的版本是:

c++ --version
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)

3 个答案:

答案 0 :(得分:7)

GCC 4.2很古老,但Apple没有发布新版本。

您可以从Mac Ports(可能更简单,更快)等地方安装现代GCC,也可以按照http://gcc.gnu.org/wiki/InstallingGCC

中的说明自行构建。

答案 1 :(得分:0)

对于面临此问题的Lion用户:

下载并安装 MacPorts-2.2.1-10.7-Lion.pkg MacPorts     来自here

的安装程序包

在终端中,搜索更新的GCC版本:

$  port search --name --glob 'gcc*' 

安装更新版本(我使用gcc5)

$  sudo port install gcc5

获取新版本的名称,并将其设置为默认值

$ port select --list gcc

Available versions for gcc:
    llvm-gcc42
    mp-gcc5
    none (active)

$ sudo port select --set gcc mp-gcc5

打开一个新终端并验证您已更新:

$ c++ --version
c++ (MacPorts gcc5 5.2.0_0) 5.2.0

答案 2 :(得分:-1)

大多数人在安装nodejs扩展时遇到错误“cc1plus:错误:无法识别的命令行选项-std = gnu ++ 0x”,这需要使用 node-gyp进行C ++编译。 那么如何解决这个错误就是这里的解决方案。基本上你得到这些错误是因为Nodejs版本不同,因为许多节点库在安装时需要C或C ++编译。所以Nodejs旧版本使用 python 2.7 gcc 编译器低于版本4.2但Nodejs较新版本使用 gcc44 编译器,这就是为什么你在安装时遇到上述错误的原因任何nodejs库。

因此,如果您的系统上安装了多个python版本,那么您需要降级nodejs和node-gyp版本并指定python版本,然后再也不会出现上述错误。

Click here to see full tutorial