2014-11-17 32 views
4

我试图在使用铿锵声的Mac OS X上构建一个项目,并且它与用gcc构建的ld: unknown option: --no-undefined链接步骤失败。 这个选项相当于什么? (请不要建议使用gcc而不是叮当声。)clang等价于--no-undefined gcc标志?

此外,还有一个更通用的问题,是否有任何资源可以在gcc和clang(链接器)选项差异之间找到某种“映射” ?

谢谢。

+2

这是一个链接器选项。使用'-Wl,...'并阅读链接器('ld')的文档。使用gcc,您可以添加'-v'来查看它实际传递给链接器的选项。 –

回答

5

OS X使用不同的linker。正如@rubenvb指出的那样,它可能是Apple's binutils之一。如果你运行man ld,然后搜索“不确定”,你会发现这个选项:

-undefined treatment Specifies how undefined symbols are to be treated. Options are: error, warning, suppress, or dynamic_lookup. The default is error.

所以,用-Wl,-undefined,error更换-Wl,--no-undefined。另外,使用武力,卢克。

+0

你确定OS X使用LLVM的'lld'而不是[Apple's binutils](http://www.opensource.apple.com/source/cctools/)? – rubenvb

+0

@rubenvb你比我的“受过教育的”猜想更可能是正确的:)'ld -v'表示它使用LLVM3.5作为LTO。我读到的内容比我应该有的要多。从答案中删除该部分。如果您不介意,请使用正确的信息进行编辑。 – Pradhan

+0

你的答案目前的方式是正确的,但为了完整起见,请链接到[lld网站上的状态部分](http://lld.llvm.org/#current-status)。 – rubenvb