gpt4 book ai didi

c - avr-gcc 3.4.0 和 avr-gcc 4.3.x 之间的二进制兼容性

转载 作者:太空宇宙 更新时间:2023-11-03 23:35:47 27 4
gpt4 key购买 nike

我继承了一个链接到一个库的应用程序,该库可能是用 gcc3 构建的。或者也许使用 imagecraft 编译器。这些信息现在已经消失在天堂般的位域中,我只剩下一个 libXXX.a 库来链接我的应用程序。我无法重新编译 libXXX.a,因为它需要来自 imagecraft 和其他地方的某些未知 header ,这些 header 在某个时候可能在我的环境中无处不在,但现在无处可寻。

我的问题是,假设我使用 avr-gcc 版本 3.4.0(并链接到那个“特殊”libXXX)编译我的应用程序产生了一个有效的二进制图像,我可以合理地期望我可以编译所有的我的应用程序的其他部分使用 avr-gcc 4(此操作有一些非常好的和经过验证的好处),与 libXXX 链接并仍然得到一个工作程序?

从本质上讲,这一切都归结为:avr-gcc 二进制是否与“可能是 avr-gcc 3.something 的神秘编译器 X”兼容?

老实说,我已经使用 avr-gcc4 成功编译了我的应用程序的其余部分并将其与库链接,并验证了结果是否有效,但是我应该注意什么样的副作用或怪癖?

最佳答案

如果两个编译器使用相同的 ABI(应用程序二进制接口(interface)),则来自不同编译器(或版本)的库链接将可靠地工作

特定平台的 ABI 通常由该平台的主要编译器指定,但这可以通过引用外部规范来完成。
ABI 更改很少见,尤其是在平台支持第三方库/应用程序的情况下,因为 ABI 更改意味着实际上所有内容都必须重建。

关于c - avr-gcc 3.4.0 和 avr-gcc 4.3.x 之间的二进制兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4040609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com