g++ 版本兼容性
Posted
技术标签:
【中文标题】g++ 版本兼容性【英文标题】:g++ version compatibility 【发布时间】:2010-09-15 14:43:30 【问题描述】:这是一个特定的 gcc 相关问题。我有一个用 g++ 4.1.2 编译的库,我想给用户。用户可以在他们的代码中使用我们的 API 并链接我们的库来创建最终的可执行文件。
我的问题与 有关。我们的一些用户使用 g++ 4.4.3,其他用户使用 4.3.3,还有一些用户使用 4.2.1。使用 4.1.2 编译的库是否与所有这些 g++ 版本兼容?我的猜测是它们应该是因为它们与 ABI 兼容。但是我们的一些客户不同意。我真的不想发布同一个库的四个不同版本。如果它们不兼容,是否有具体原因或有办法避免不兼容?
【问题讨论】:
【参考方案1】:只要使用相同的 ABI(应用程序二进制接口),两个库就可以相互兼容。据我所知,GCC 上一次正式更改 ABI 是使用 v3.3 或 v3.4。
但是,这仅适用于兼容代码。任何依赖于未记录或未指定行为的来源都可能中断,恕不另行通知。
所以答案是:你的编译器版本都是兼容的;问题是源代码是不是。
【讨论】:
用户“Employed Russian”指出“......在 GCC 4.2.1 附带的 libstdc++.so.6.0.9 中存在不兼容性。”感谢您的插件。【参考方案2】:简而言之,是的。如果您的应用程序不使用新 GCC 的功能,您可以使用旧 GCC 安全地编译它。 GCC 被设计为向后兼容,使用旧 GCC 库构建的应用程序不会在新版本上中断。
【讨论】:
以上是关于g++ 版本兼容性的主要内容,如果未能解决你的问题,请参考以下文章