是铛++ ABI一样的g ++? [重复](Is clang++ ABI same as g++

2019-06-26 14:08发布

可能重复:
GCC 4.0,4.2和LLVM ABI兼容性

按主题,都是C ++的ABI兼容?
即可以与前者产生的二进制(共享对象)使用,并与后者(反之亦然)连接的?

干杯

Answer 1:

按照铛的libc ++页 ,他们定位

与gcc的的libstdc ++对于一些低级别的功能,如异常对象,RTTI和内存分配ABI兼容性。

这似乎意味着,他们不针对100%的兼容性。 例如,页面上他们也说:

从多年的经验(包括具有之前实施的标准库),我们已经了解了实现标准容器需要ABI破损以及它们是如何实现根本性的改变很多东西。 例如,通常接受的是构建的std ::使用“短串优化”,而不是使用写时复制(COW)的字符串是多核机器(++特别是在C'0X,其具有rvalue引用)优异的方法。 决心与旧版本的库打破ABI兼容性是实现libc中的绩效目标的关键++。

我相信,海湾合作委员会依然采用了引用计数的牛,所以看来铛并不担心与ABI兼容std::string (无论是与旧铛编译的二进制文件或与GCC)。



Answer 2:

这似乎是兼容的。 锵也有自己的C ++运行一个项目,它说,它是低级别的兼容与GNU stdlibc ++。 我只是试图一个小例子程序,其中,I编译一个文件与铛++,和编译和链接主程序,并用克++。 没问题,到目前为止,但该程序是相当简单的。



文章来源: Is clang++ ABI same as g++? [duplicate]