我知道Clang和GCC或多或少是兼容的C / C ++编译器,只要您负责诸如体系结构标志,预定义和链接正确的库之类的事情。实际上,使用一个编译器创建库并将它们与另一个编译器链接起来很容易(至少在x86上如此)。
下面是一个测试项目,正是这样: https://gitlab.com/higaski/Interoperability
但是我想知道链接时间优化(LTO)是否可以以某种方式在整个编译器中工作?我知道LTO需要某种形式的中间表示形式,例如LLVM的位代码或GCC的GIMPLE,但是也许存在一个可以同时使用它们的工作流程?
答案 0 :(得分:1)
不,LTO不能在编译器之间共享,正是因为LTO实际上是编译器内部表示的转储。即使在同一编译器的发行版中,这种表示形式也是不稳定的。