gpt4 book ai didi

c++ - 强制 Clang 链接到 C++ 运行时

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:51 33 4
gpt4 key购买 nike

我有一个包含 C 和 C++ 源代码混合的项目。它目前在 OS X 上使用 GCC 构建。该项目有定制的构建脚本,调用 gcc 命令来编译 C 和 C++ 源代码,并单独调用链接器。

我现在正尝试使用 Clang 构建它。

调用 clang 会正确编译源文件;它区分 .c.cpp 源文件,并针对每种情况编译适当的语言。不过,我在链接时遇到了问题。当链接器作为 clang 调用时,C++ 运行时库未链接进来,导致由于缺少符号而导致构建错误。

当我将 clang++ 设置为构建工具时,我可以成功链接,但这会导致编译时错误和警告;它真的不喜欢用 C++ 编译器编译 C 源代码。

clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
...
/usr/include/stdio.h:250:49: error: redefinition of parameter 'restrict'

我必须为构建脚本指定一个工具以用作编译器/链接器,因此我需要用 clang 代替 海湾合作委员会。有什么方法可以说服 clang(不是 clang++)链接到 C++ 运行时库?

-stdlib=libc++ 等选项不起作用。

最佳答案

您应该能够使用普通的链接器标志,就像您对 gcc 所做的一样:clang -lc++clang -lstdc++ 取决于您使用的是哪种实现想。 (你应该想要 libc++)

关于c++ - 强制 Clang 链接到 C++ 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939046/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com