什么是clang相当于--no-undefined gcc标志?
Posted
技术标签:
【中文标题】什么是clang相当于--no-undefined gcc标志?【英文标题】:What is clang's equivalent to --no-undefined gcc flag? 【发布时间】:2014-11-17 11:08:10 【问题描述】:我正在尝试使用 clang 在 Mac OS X 上构建一个项目,但它在与ld: unknown option: --no-undefined
的链接步骤中失败了,这是用 gcc 构建的。
此选项的 clang 等效项是什么? (请不要建议使用 gcc 而不是 clang。)
还有一个更通用的问题,是否有任何资源可以找到 gcc 和 clang(链接器)选项差异之间的某种“映射”?
谢谢。
【问题讨论】:
这是一个链接器选项。使用-Wl,...
并阅读链接器的文档 (ld
)。使用 gcc,您可以添加 -v
以查看它实际传递给链接器的选项。
【参考方案1】:
OS X 使用不同的linker。正如@rubenvb 指出的那样,它可能是来自Apple's binutils 的那个。如果你运行man ld
,然后搜索“undefined”,你会找到这个选项:
-未定义的处理 指定如何处理未定义的符号。选项有:error、warning、suppress 或 dynamic_lookup。默认为错误。
因此,将-Wl,--no-undefined
替换为-Wl,-undefined,error
。另外,请使用原力,卢克。
【讨论】:
你确定 OS X 使用 LLVM 的lld
而不是 Apple's binutils?
@rubenvb 你比我“受过教育”的猜测更有可能是对的 :) ld -v
说它使用 LLVM3.5 进行 LTO。我对它的阅读比我应该阅读的要多。从答案中删除该部分。如果您不介意,请使用正确的信息对其进行编辑。
您的回答与目前的情况一样,但为了完整起见,请提供指向 the status section on the lld website 的链接。
感谢@Pradhan 的提示。我的坏,没想到调查老男人。它进行了一项更正:必须使用-Wl,-undefined,error
- 否则它会因clang: error: no such file or directory: 'error'
而失败。以上是关于什么是clang相当于--no-undefined gcc标志?的主要内容,如果未能解决你的问题,请参考以下文章
gcc编译器选项-Wl,--no-undefined(告诉链接器在链接过程中不允许有未定义的符号)(gcc编译器和链接器是分离的工具,它们需要通过选项来进行通信)
clang 是不是有相当于 GCC 的 -mno-vzeroupper 标志?
Clang 相当于 GCC 的 __builtin_darn()