1

我最近在我的 Macbook Pro 上安装了 Macports,并安装了该gcc47端口。在添加alias g++="g++-mp-4.7"到我.profile并确保我正在使用g++-4.7之后,我尝试构建我的一个使用 C++11 的项目。但是,我收到此错误:

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

我觉得这很奇怪,因为 Macports 构建了支持 C++ 的 gcc,所以我希望 C++11 应该可以正常工作。我已经粘贴了g++ -v下面的输出。您对为什么g++-mp-4.7不将其识别-std=c++11为有效选项有任何想法吗?

COLLECT_GCC=g++-mp-4.7
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin12/4.7.1/lto-wrapper
Target: x86_64-apple-darwin12
Configured with: ../gcc-4.7.1/configure --prefix=/opt/local --build=x86_64-apple-darwin12 --enable-languages=c,c++,objc,obj-c++,lto,fortran,java --libdir=/opt/local/lib/gcc47 --includedir=/opt/local/include/gcc47 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-4.7 --with-libiconv-prefix=/opt/local --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-4.7 --with-gxx-include-dir=/opt/local/include/gcc47/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --with-ppl=/opt/local --with-cloog=/opt/local --enable-cloog-backend=isl --enable-stage1-checking --disable-multilib --enable-lto --with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld --with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket --disable-ppl-version-check --with-pkgversion='MacPorts gcc47 4.7.1_2'
Thread model: posix
gcc version 4.7.1 (MacPorts gcc47 4.7.1_2) 
4

2 回答 2

3

为了将来参考,如果你安装 gcc_select 你可以这样做:

 sudo port select gcc mp-gcc47
 hash gcc

这应该设置你的 Macports 安装的 gcc;如果您需要重置为 Xcode 的默认值,只需使用 'none' 重新运行它

编辑:Xcode 4.4.x 带有一个不错的 Clang 版本;如果您安装它,然后从 Preferences->Downloads: Command Line Tools 单击“Install”

运行 clang 为:

clang++ -std=c++11 -stdlib=libc++ ...

请注意,如果未安装 mp-gcc47,您需要先执行此操作:

 sudo port install mp-gcc47

要获取可用 gcc 端口的完整列表:

 sudo port list | grep gcc | less
于 2012-08-12T10:40:40.130 回答
1

我的问题是,由于 GNU Make 在不同的 shell 中执行命令,alias g++="g++-mp-4.7"make.

于 2012-08-11T23:18:15.080 回答