【发布时间】:2017-03-02 14:52:39
【问题描述】:
将使用不同 GCC 版本编译的源生成的对象链接到共享库是否安全?
我假设不是,但如果使用的 GCC 在代码生成和优化改进方面没有区别?是否有信息可以知道哪个 GCC 编译器不向后兼容?
我的问题也与二进制文件有关,我查看了
https://gcc.gnu.org/onlinedocs/gcc/Compatibility.html
据我了解,不同的 GCC 版本只要符合相同的 ABI 就可以兼容
【问题讨论】:
-
GCC 的版本有何不同?如果您尝试将 GCC 2.x 中的代码与 GCC 6.x 链接,则可能会出现问题。如果您将 4.9.4 与 4.9.3 混合使用,则不会有问题。我没有遇到 4.x 或 5.x 代码与 6.x 代码混合的问题,但这并不能保证您找不到问题。 OTOH,平台的 ABI(应用程序二进制接口)通常会在几年内保持稳定,并且各种不同的编译器都可以使用它,所以如果出现问题(即使是 2.x 和 6.x 版本)我也会感到惊讶。 x 被混合——前提是目标文件类型是好的)。
-
@JonathanLeffler 从 4.4 到 4.7?我在测试时没有发现任何问题,但我不确定我的测试是如何覆盖的,因为我不确定
the possible problems that can occur是什么 -
在我看来,部分基于经验,您不太可能遇到任何问题。我不确定我是否可以引用支持该论点的文档——这是我没有直接回答而不是 cmets 的主要原因。
标签: gcc compilation