g++4.6在mac os x上调用ld时,在-F和路径之间添加了一个空格



我为Mac OS X编译了g++4.6。它运行良好,除非我使用-F选项,在这种情况下,我会得到错误:

ld: -F must be immediately followed by a directory path (no space)

在g++命令行上,我确保-F和文件夹之间没有空格,但从-v选项开始g++,我确实可以看到g++正在调用ld,在-F选项之后添加空格。我能做什么?

我很确定我以前遇到过这个问题,但还是设法解决了。我只是不记得怎么做了。

这里的问题是选项-F未通过gcc语言验证,因为gcc告诉该选项对语言DRIVER无效(0x4000)。

虽然这对我来说仍然很奇怪,但作为一个古怪且有效的补丁,我已经改变了gcc/c-family/c.opt,并将驱动程序语言添加到选项中,使其显示为:

F
Driver C ObjC C++ ObjC++ Joined Separate MissingArgError(missing path after %qs)
-F <dir>        Add <dir> to the end of the main framework include path

对于任何更好的解决方案,都应该调试gcc.c,并在初始化选项时选择common.c文件(正如我在decode_cmdline_option()中所做的那样,在那里它检查"if(!option_ok_For_language(option,lang_mask))")

您可以使用

-Wl,-F{path to your framework(s)} -framework {your framework}

最新更新