gpt4 book ai didi

gcc - llvm-gcc 和 clang 二进制文件是否与 gcc 兼容? - 特别是 Windows 上的 mingw gcc

转载 作者:太空狗 更新时间:2023-10-29 23:16:29 25 4
gpt4 key购买 nike

如果我使用 llvm-gcc 构建一个静态库,然后将它与使用 mingw gcc 编译的程序链接,结果是否有效?

对于 llvm-gcc、clang 和普通 gcc 的其他组合也是如此。我对这在 Linux(当然是使用普通的非 mingw gcc)和其他平台上的表现很感兴趣,但重点是在 Windows 上。

我也对所有语言感兴趣,但特别强调 C 和 C++ - 显然 clang 不支持 Fortran 等,但我相信 llvm-gcc 支持。

我假设它们都使用 ELF 文件格式,但是调用约定、虚拟表布局等呢?

最佳答案

是的,对于 C 代码,Clang 和 GCC 是兼容的(事实上,它们都使用 GNU 工具链进行链接。)您只需确保告诉 clang 创建编译对象而不是中间位码对象。 C ABI 定义明确,所以唯一的问题是存储格式。

C++ 一点也不能在编译器之间移植;不同的编译器使用不同的虚拟表调用、构造函数、析构、名称修改、模板实现等。通常,您应该假设来自一个 C++ 编译器的对象不能与另一个编译器一起工作。

然而,是的,在撰写本文时,Clang++ 也能够使用 GCC/C++ 编译的库;我最近设置了一个平台,使用 G++ 的标准运行时库使用 clang 编译 C++ 程序,它编译+链接很好。

关于gcc - llvm-gcc 和 clang 二进制文件是否与 gcc 兼容? - 特别是 Windows 上的 mingw gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23688016/

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