4

我正在尝试编译一个使用

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)
4

3 回答 3

7

GCC 4.2 是古老的,但 Apple 没有发布更新的版本。

您可以从 Mac Ports 之类的地方安装现代 GCC(这可能更简单快捷),也可以按照http://gcc.gnu.org/wiki/InstallingGCC上的说明自行构建

于 2012-05-07T11:49:46.517 回答
0

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

从此处下载并安装MacPorts-2.2.1-10.7-Lion.pkg MacPorts 安装程序包

在终端中,搜索更新的 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
于 2015-10-06T12:42:34.587 回答
-1

大多数人在安装需要使用node- gyp 进行 C++ 编译的 nodejs 扩展时收到错误“cc1plus: error: unrecognized command line option -std=gnu++0x”。那么如何解决这个错误所以这里是解决方案。基本上,由于 Nodejs 版本不同,您会收到这些错误,因为许多节点库在安装时需要 C 或 C++ 编译。因此,Nodejs 旧版本使用python 2.7,  gcc编译器低于 4.2 版本,但 Nodejs 新版本使用gcc44编译器,这就是为什么在安装任何 nodejs 库时会出现上述错误。

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

点击这里查看完整教程

于 2015-11-01T05:11:29.853 回答