假设我在 x86 计算机上从hello.c
创建了一个目标文件,然后将该文件发送到 ARM 计算机。是否能够从收到的目标文件中构建可执行文件?假设我们正在使用gcc
。
注意:
我知道交叉编译作为基本相同的最终结果的众所周知的方法,但是对这个特定的场景感到好奇。
我也知道这个question,但我想主要强调不同的CPU架构和相同的编译器,因为我没有通过我的谦虚理解找到这些点。
答案 0 :(得分:2)
目标文件包含的内容没有标准。有些可能已包含机器指令,其他可能与平台无关。因此,如果有的话,它取决于您的特定编译器,从而成为特定于应用程序的问题。
例如,ELF - 头包含有关编译二进制文件的CPU和ABI的信息,不幸的是,这已经结束了讨论。
答案 1 :(得分:1)
你可以依靠它不会起作用!你永远不能在arm cpu上执行x86代码。这与放置在目标文件中的任何元信息无关,就像在ELF中一样。目标文件包含可执行代码,arm cpu永远不能执行为不同cpu创建的二进制文件。