首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >llvm-gcc和clang二进制与gcc兼容吗?--尤其是Windows下的名gcc

llvm-gcc和clang二进制与gcc兼容吗?--尤其是Windows下的名gcc
EN

Stack Overflow用户
提问于 2010-07-10 09:55:20
回答 5查看 15.8K关注 0票数 27

如果我用llvm-gcc构建一个静态库,然后把它链接到一个用名为gcc编译的程序上,结果会起作用吗?

其他的组合也是一样的我对这在Linux (当然是使用普通的非命令式的gcc )和其他平台上是如何工作的也很感兴趣,但重点是Windows。

我也对所有的语言都感兴趣,但是我非常强调C和C++ --显然clang不支持Fortran等,但我相信llvm- on支持。

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-30 22:04:42

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

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

然而,是的,在写这篇文章的时候,Clang++也能够使用GCC/C++编译库;我最近建立了一个平台,使用G++的标准运行时库使用clang编译C++程序,并且它compiles+links得很好。

票数 23
EN

Stack Overflow用户

发布于 2010-07-17 05:44:43

我不知道答案,但this presentation中的幻灯片10似乎暗示由llvmgcc生成的".o“文件包含LLVM bytecode (.bc)而不是通常的目标特定的目标代码,因此链接时优化是可能的。然而,LLVM链接器应该能够将LLVM代码与“普通”的GCC生成的代码链接起来,就像下一张幻灯片所说的“在本地.o文件和库中链接”。

LLVM是一个Linux工具,我有时发现Linux编译器在Windows上不能很好地工作。我很好奇你能不能让它工作。

票数 2
EN

Stack Overflow用户

发布于 2013-03-04 20:31:33

我使用-m i386pep通过ld链接clang的.o文件。在http://dragonegg.llvm.org/上可以看到llvm致力于与gcc集成,因此非常直观地猜测llvm家族将与gcc工具链交叉兼容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3217513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档