g ++版本兼容性

时间:2010-09-15 14:43:31

标签: c++ gcc compiler-construction g++ backwards-compatibility

这是一个特定的gcc相关问题。我有一个用g ++ 4.1.2编译的库,我想给用户。用户可以在他们的代码中使用我们的API并链接我们的库来创建最终的可执行文件。

我遇到的问题与g ++版本的兼容性有关。我们的一些用户使用g ++ 4.4.3,其他用户使用4.3.3,还有一些用户使用4.2.1。使用4.1.2编译的库是否与所有这些g ++版本兼容?我的猜测是因为它们与ABI兼容。但是我们的一些客户并不同意。我真的不想发送同一个库的四个不同版本。如果它们不兼容是否有具体原因或有没有办法避免不兼容?

2 个答案:

答案 0 :(得分:4)

只要两个库使用相同的ABI(应用程序二进制接口),它们就会相互兼容。据我记得,GCC最后一次正式改变ABI的是v3.3或v3.4。

但是,这仅适用于兼容的代码。依赖于未记录或未指定行为的任何来源可能会在不另行通知的情况下中断。

所以答案是:你的编译器版本都是兼容的;问题是源代码是否是。

答案 1 :(得分:2)

简而言之,是的。如果您的应用程序不使用新GCC的功能,您可以使用较旧的GCC安全地编译它。 GCC是向后兼容的,使用旧版GCC库构建的应用程序不会在较新版本上中断。