Windows 可移植可执行文件真的可以跨机器架构移植吗?如果是这样,它是如何工作的?如果不是,那么“可移植可执行文件”是什么意思或可执行文件的哪一部分是可移植的?
谢谢,西瓦钱德兰
Windows 可移植可执行文件真的可以跨机器架构移植吗?如果是这样,它是如何工作的?如果不是,那么“可移植可执行文件”是什么意思或可执行文件的哪一部分是可移植的?
谢谢,西瓦钱德兰
可执行文件本身不是可移植的。PE 格式是“可移植的”,因为不同架构的可执行文件使用相同的 PE 格式,但 PE 文件中的可执行代码特定于单个处理器架构。
在实践中,这意味着许多相同的编译器和链接器代码可以重用于不同的体系结构,并且用于检查可执行文件的工具可以(在某种程度上)适用于“外来”可执行文件。
(我在这里谈论的是本机可执行文件 - .NET 程序集也使用 PE 格式并且可以真正移植。)
来自 Wikipedia:“术语“可移植”是指该格式在操作系统软件架构的众多环境中的多功能性。”
好吧,它是可移植的,因为该格式可以用于各种平台上的可执行文件(SkyOS 在切换到 ELF 之前使用它)。它在平台无关代码方面是不可移植的,或者如果您在一个操作系统上生成一个 PE 文件,它在另一个操作系统上运行。
PE 文件只是二进制应用程序数据的容器。它们允许针对不同的 CPU 架构(甚至是 .Net 等非 CPU 软件架构)。这就是为什么它们被称为“便携式”。
然而,它们包含的每个二进制应用程序映像都只适用于一种架构。