- 主题:库gcc编译,程序clang编译,链接gcc的库可以吗
自己写的一些程序是clang编译的,用到mysql客户端访问库(gcc)。
自己的程序,同mysql客户端程序进行链接可以吗?
--
FROM 114.91.14.*
这种事情不是经常发生的吗?只要你下载别人编译好的库用,这个问题就发生过,所以一般应该没问题。
--
FROM 114.255.33.*
发布时间相近的GCC和clang使用的ABI应该是兼容的。
【 在 saynothing (止语) 的大作中提到: 】
: 自己写的一些程序是clang编译的,用到mysql客户端访问库(gcc)。
: 自己的程序,同mysql客户端程序进行链接可以吗?
--
FROM 103.90.178.*
C应该问题不大,cpp太恶心了,同一编译器不同版本都可能不兼容。。
【 在 saynothing 的大作中提到: 】
: 自己写的一些程序是clang编译的,用到mysql客户端访问库(gcc)。
:
: 自己的程序,同mysql客户端程序进行链接可以吗?
: --
:
发自「今日水木 on M2007J17C」
--
FROM 106.121.66.*
同一个命令,g++没问题。改成clang++一堆的问题。。
【 在 GoGoRoger 的大作中提到: 】
: C应该问题不大,cpp太恶心了,同一编译器不同版本都可能不兼容。。
: 发自「今日水木 on M2007J17C」
--
FROM 114.91.14.*
【 在 ArchLinux 的大作中提到: 】
: 发布时间相近的GCC和clang使用的ABI应该是兼容的。
:
这个没细看过,name mangling都是一样的吗?
--
FROM 111.206.145.*
一样的。GCC compatibility 本身就是 Clang 所宣传的特性之一。
现在有一些发行版,软件仓库里的包有的用GCC编译,有的用Clang编译,如果不兼容的话,那会有很多软件跑不起来。
https://clang.llvm.org/features.html#enduser
【 在 leslin (我心有约) 的大作中提到: 】
: 这个没细看过,name mangling都是一样的吗?
--
FROM 103.90.178.*
这个只是源代码兼容吧,说的的gcc的扩展clang支持而已。二进制兼容并不能保证。
还有libc++和libstdc++之分,这两个选项就不能互相兼容。
所以不要假设不同便编译器的二进制兼容,那会带来不可预知的错误。
我常用的opencv库,win下面连不同的vc版本都要出不同的库。
【 在 ArchLinux 的大作中提到: 】
: 一样的。GCC compatibility 本身就是 Clang 所宣传的特性之一。
: 现在有一些发行版,软件仓库里的包有的用GCC编译,有的用Clang编译,如果不兼容的话,那会有很多软件跑不起来。
:
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*
先试试再说呗。mysql那个是纯C的吧
--
FROM 125.35.121.*
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.*