我使用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
我不确定我是做什么工作的。对于我在学校写的课程,我需要一个更新的编译器。在此先感谢您的帮助。
答案 0 :(得分:3)
问题是eclipse路径上的发现顺序与终端中的顺序不同。我曾经按照上面的建议尝试了符号链接,但仍然没有解决我的问题,但是这样做了!
经过多次搜索和尝试其他事情后,我能够在Project -> Properties -> C/C++ Build -> Settings
中手动设置我的编译器和链接器的路径。
执行g ++以找出安装了正确版本的g ++的位置。我在/opt/local/bin/g++
单击GCC C ++ Compiler,并使用它的完整路径填写命令(例如/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
)执行相同的操作。
这最终对我有用,我希望它能解决你的问题!
答案 1 :(得分: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版本来解决此问题。
答案 2 :(得分:-2)
当你输入-stdc ++ 11时,你在-c -fmessage-length = 0和它之间放了一个“空格”吗?比如...... -c -fmessage-length = 0 -stdc ++ 11 not -c -fmessage-length = 0-stdc ++ 11。那个单一的空间阻止了eclipse在windows中识别gcc。