gpt4 book ai didi

GCC 目标特异性和二进制兼容性

转载 作者:行者123 更新时间:2023-12-04 21:25:04 25 4
gpt4 key购买 nike

初始说明:该问题提到 AIX,因为它是初始上下文,但问题确实与 gcc 本身有关,很可能与平台无关。

AIX 应该是向后二进制兼容的:在 AIX 5.1 上编译的 C 程序将在 5.2、5.3、6.1 和 7.1 上运行。

在我的理解中,gcc 应该构建为针对特定系统(在交叉编译的情况下,无论是当前系统还是另一个系统)。因此,基于 AIX 6.1 构建的 gcc 以 AIX 6.1 为目标,并且由于二进制兼容性而生成可在 6.1 和 7.1 上使用的二进制文件。

然而,构建在 AIX 6.1 上的 gcc 本身是一个 6.1 程序,因此它应该按原样在 7.1 上执行。当然,如果我在 7.1 上用它编译一个程序,这个程序可能会被链接或使用特定于 7.1 的头文件,从而使生成的二进制文件需要 7.1。因此,据我所知,我应该能够在 7.1 机器上运行在 AIX 6.1 上构建的 gcc,并生成可能不是最佳但完全有效的二进制文件,尽管它们需要 7.1 作为链接的副作用。

这看起来太像彩虹和 unicorn 在闪闪发光的天空中跳舞了。我闻到了一些腥味,但对 gcc 内脏缺乏任何了解。请各位大侠赐教。

tl;博士 : 能否凭借平台二进制兼容性在版本 N+1 上运行和使用基于操作系统/平台的版本 N 构建并针对版本 N 的 gcc 以生成在版本 N+1 上运行的二进制文件?如果不是,什么机制会阻止它?

最佳答案

这是启示:你的问题是方式太笼统 .为了回答这个问题,必须有人知道

  • 您关心的操作系统
  • 您关心的操作系统版本
  • 您关心的 gcc 版本

  • 然后研究这个三维矩阵中的二进制兼容性。

    阻止二进制兼容性的机制太多了,并且与您的操作系统和编译器供应商打破它的独创性直接相关。更常见和记录在案的方法之一是正式弃用 API 调用、移除已提供的兼容性库以及烧毁桥梁,例如从 a.out 转到 ELF。

    关于GCC 目标特异性和二进制兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4851867/

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