- 主题:库gcc编译,程序clang编译,链接gcc的库可以吗
发布时间相近的GCC和clang使用的ABI应该是兼容的。
【 在 saynothing (止语) 的大作中提到: 】
: 自己写的一些程序是clang编译的,用到mysql客户端访问库(gcc)。
: 自己的程序,同mysql客户端程序进行链接可以吗?
--
FROM 103.90.178.*
一样的。GCC compatibility 本身就是 Clang 所宣传的特性之一。
现在有一些发行版,软件仓库里的包有的用GCC编译,有的用Clang编译,如果不兼容的话,那会有很多软件跑不起来。
https://clang.llvm.org/features.html#enduser
【 在 leslin (我心有约) 的大作中提到: 】
: 这个没细看过,name mangling都是一样的吗?
--
FROM 103.90.178.*
Hmm,那个页面还真的只是说源码兼容。
查了下GCC和Clang关于C++ ABI有关的源码和文档,两个编译器都实现Itanium ABI. 但是GCC的-fabi-version这个选项就支持0~16,每个GCC的C++ ABI版本都有一点差别,就是说GCC就算是相邻两个大版本直接都有可能出现不兼容。如果要保证兼容性的话,可能需要在-fabi-compat-version=这些编译参数上做点调整。
【 在 foliver (Oliver) 的大作中提到: 】
: 这个只是源代码兼容吧,说的的gcc的扩展clang支持而已。二进制兼容并不能保证。
: 还有libc++和libstdc++之分,这两个选项就不能互相兼容。
: 所以不要假设不同便编译器的二进制兼容,那会带来不可预知的错误。
: ...................
--
FROM 103.90.178.*