Windows 上的胖二进制文件?
我知道在 Mac OS X 上,您可以使用 lipo 将针对不同架构的多个二进制文件组合成一个二进制文件。我想知道Windows端是否有类似的解决方案。谢谢。
I know that on Mac OS X, you can combine multiple binaries that target different architectures into a single binary using lipo. I am wondering if there is a similar solution on the Windows side. Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不幸的是,所有 Windows 体系结构在 PE 标头中都使用相同的结构,所以不是。不过,可以融合 Windows 可执行文件和 DOS 可执行文件,因为 DOS 使用 MZ 标头。
Unfortunately all the Windows architectures use the same structures in the PE header, so no. It is possible to fuse a Windows executable and a DOS executable though, since DOS uses the MZ header instead.
ARM 上的 Windows 11 中有一种真正的胖 PE 格式,名为 Arm64X,其中包含 Arm64 代码和Arm64EC 代码,甚至 快进序列中的 x86-64 存根,用于直接从 x86-64 代码调用
Arm64EC 完全是一个 新的 ABI 与 ARM64 不兼容,专为混合 x86-64 和 ARM64 代码而设计
There's a real fat PE format in Windows 11 on ARM called Arm64X which contains both Arm64 code and Arm64EC code, and even x86-64 stubs in Fast Forward Sequence for calling directly from x86-64 code
Arm64EC is a completely new ABI that's incompatible with ARM64, designed for mixing x86-64 and ARM64 code
我认为您正在参考 ADS ,已添加到 NTFS 中以提供与 Mac 上类似的功能。虽然NTFS支持多个流,但PE加载器应该选择正确的一个,我不确定它是否实现了。
I think you are reffering to the ADS, that has been added to the NTFS to provide similar functionality as on Mac. Although NTFS supports multiple streams, the PE loader should choose the right one, and I'm not sure if it's implemented.