代码之家  ›  专栏  ›  技术社区  ›  Steve314

llvm gcc和clang binary是否与gcc兼容尤其是在Windows上

  •  27
  • Steve314  · 技术社区  · 15 年前

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

    我对所有的语言都感兴趣,但是非常强调C和C++——显然CLAN不支持Fortran等,但我相信LLVM GCC确实如此。

    5 回复  |  直到 15 年前
        1
  •  23
  •   Skrylar    13 年前

        2
  •  2
  •   Qwertie    15 年前

    我不知道答案,但请滑入10 this presentation 似乎意味着llvmgcc生成的“.o”文件包含LLVM字节码(.bc),而不是通常的特定于目标的目标代码,因此链接时间优化是可能的。然而,LLVM链接器应该能够将LLVM代码与“普通”GCC生成的代码链接起来,正如下一张幻灯片所说的“在native.o文件和库中链接到这里”。

        3
  •  2
  •   Chawathe Vipul S    13 年前

    当通过ld链接clang的.o文件时,我使用-mi386pep。llvm致力于与gcc集成,这在 http://dragonegg.llvm.org/ 因此,非常直观地猜测llvm系列将与gcc工具链非常兼容。

        4
  •  1
  •   Steve314    15 年前

    抱歉-我休息了一会就要回到llvm了,我从来没有做过比教程更多的事情。第一次,在努力让llvm2.6构建在mingwcc上之后,我有点累了——幸好llvm2.7没有问题。

    今天再次阅读教程,我注意到在教程的第5章中不仅有一个明确的声明,即LLVM使用平台的ABI(应用程序二进制接口),而且教程编译器依赖于此来允许访问外部函数,如sin和cos。

    对大多数事情来说,能够使C函数调用足够了,我仍然关心C++的一些问题。

        5
  •  -2
  •   old_timer    15 年前

    希望他们能修复它,但我避免llvm gcc,因为我(也)使用llvm作为交叉编译器,当您在64位机器上使用llvm gcc-m32时,-m32被忽略,您得到的64位int必须在32位目标机器上伪造。Clang没有这个bug,gcc也没有。而且我越用叮当声我就越喜欢。至于你的直接问题,不知道,在理论上,这些天的目标已经众所周知或使用调用约定。你可能希望gcc和llvm都符合相同的标准,但你永远不知道。找到这一点的最简单方法是编写两个简单函数,使用这两个工具集编译和反汇编,并查看它们如何将操作数传递给函数。