我为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}