我正在尝试编译一个使用
的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)
答案 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版本,然后再也不会出现上述错误。