【问题标题】:Are object files architecture independent?目标文件体系结构是否独立?
【发布时间】:2014-09-20 15:07:59
【问题描述】:

假设我在 x86 计算机上从 hello.c 创建了一个目标文件,然后将该文件发送到 ARM 计算机。它是否能够从收到的目标文件中构建可执行文件?假设我们使用的是gcc


注意:

我知道交叉编译是一种众所周知的方法,其最终结果基本相同,但对这种特定情况感到好奇。

我也知道question,但我想主要强调不同的 CPU 架构和相同的编译器,因为根据我的理解,我并没有发现这些要点。

【问题讨论】:

  • 目标文件包含机器语言代码。不同的 CPU 架构使用不同的机器语言。

标签: cpu-architecture object-files


【解决方案1】:

你可以相信它不会工作!您根本无法在 arm cpu 上执行 x86 代码。这与放置在目标文件中的任何元信息无关,例如在 ELF 中。目标文件包含可执行代码,arm cpu 永远无法执行为不同 cpu 创建的二进制文件。

【讨论】:

  • 我认为你的介绍性短语没有多大意义。他正在研究为不同 CPU / ABI / ... 编译的链接目标文件...
  • 是的,不同的 CPU。你将如何为错误的 cpu 运行代码?还是我们在谈论交叉编译?
  • 你的第一句话,它比启发更令人困惑:P
【解决方案2】:

对象文件包含的内容没有标准。有些可能已经包含机器指令,有些可能与平台无关。因此,如果有的话,它取决于您的特定编译器,因此成为一个特定于应用程序的问题。

例如,ELF-header 包含有关编译二进制文件的 CPU 和 ABI 的信息,不幸的是,这已经结束了讨论。

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 2011-04-18
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多