6

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

当我尝试在 Eclipse 中编译 c++ 代码时,我得到: Invoking: GCC C++ Compiler 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

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

4

3 回答 3

3

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

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

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

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

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

这终于对我有用,我希望它能解决你的问题!

于 2014-04-18T03:36:17.300 回答
2

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

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

于 2013-04-21T00:37:26.270 回答
-2

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

于 2013-02-25T05:07:15.827 回答