Eclipse 不会在 Mac 上使用 gcc 4.7

Posted

技术标签:

【中文标题】Eclipse 不会在 Mac 上使用 gcc 4.7【英文标题】:Eclipse will not use gcc 4.7 on Mac 【发布时间】:2012-10-13 05:28:19 【问题描述】:

我使用 macports 安装了 gcc47。我使用 select 使 gcc47 成为我的活动编译器。当我在终端中输入 gcc --version 时,我得到了这个: gcc (MacPorts gcc47 4.7.2_2) 4.7.2 版权所有 (C) 2012 Free Software Foundation, Inc. 这是免费软件;查看复制条件的来源。没有 保修单;甚至不是为了适销性或特定用途的适用性。

当我尝试在 Eclipse 中编译 c++ 代码时,我得到: 调用:GCC C++ 编译器 g++ -D__GXX_EXPERIMENTAL_CXX0X__ -I/Users/XXXX/QtSDK/Madde/sysroots/harmattan_sysroot_10.2011.34-1_slim/usr -O0 -g3 -Wall -c -fmessage-length=0 -std=c++0x -MMD -MP -MF “XXXX_Process.d”-MT“XXXX_Process.d”-o“XXXX_Process.o”“../XXXX_Process.cpp” cc1plus:错误:无法识别的命令行选项“-std=c++0x” make: * [XXXX_Process.o] 错误 1

我不确定我没有做些什么来完成这项工作。对于我在学校编写的程序,我需要一个更新的编译器。提前感谢您的帮助。

【问题讨论】:

-std=c++11 也不行 【参考方案1】:

问题是 Eclipse 路径上的发现顺序与终端中的顺序不同。我已经按照上面的建议尝试了符号链接,但仍然没有解决我的问题,但是这样做了!

经过大量搜索和尝试其他事情,我能够在Project -> Properties -> C/C++ Build -> Settings 中手动设置我的编译器和链接器的路径。

从终端执行 which g++ 以找出正确版本的 g++ 的安装位置。我的在/opt/local/bin/g++

点击 GCC C++ 编译器,并填写命令的完整路径(例如,/opt/local/bin/g++)。点击 Miscellaneous 以确保添加 -std=c++11 标志。

对 GCC C 编译器(将命令设置为完整路径 /opt/local/bin/g++)、GCC C++ 链接器 (/opt/local/bin/g++) 和 GCC 汇编器 (/opt/local/bin/as) 执行相同的操作。

这终于为我工作了,我希望它能解决你的问题!

【讨论】:

【参考方案2】:

MacPorts 将 gcc 安装到 /opt/local/bin,而 /usr/bin 保持不变。前者显然在默认 shell $PATH 中具有更高的优先级,因此 shell 会在 /opt/local/bin 下找到 gcc,即使 /usr/bin/gcc 仍然指向 mac LLVM-gcc-4.2 编译器。 Eclipse 显然没有像终端一样设置$PATH,因此找到了/usr/bin/ 版本。

我可以通过手动将 /usr/bin/gcc,g++ 符号链接到 MacPorts 版本来解决此问题。

【讨论】:

【参考方案3】:

当你进入-stdc++11的时候,你有没有在-c -fmessage-length=0和它之间放一个“空格”?像...-c -fmessage-length=0 -stdc++11 不是 -c -fmessage-length=0-stdc++11。那个单一的空间阻止了eclipse在windows中识别gcc。

【讨论】:

以上是关于Eclipse 不会在 Mac 上使用 gcc 4.7的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac 上使用 GCC 4.7 构建?

如何在 Mac OS X 10.8 / Xcode 4.4 上使用/安装 gcc

mac上怎么切换 gcc 的版本

使用 GCC 4 在 Mac OS X 中安装 gammu 时出现 LONG_BIT 错误

如何在 Mac OS X 主机上为 MIPS 目标构建 GCC 4.8.x

在 mac 上切换 gcc 版本