假设我有一个针对Linux(foo.elf
)和OSX(foo.macho
)构建的程序。我希望以某种方式分发它,以便用户不必担心它。
是否有一种方法可以创建文件foo
,使其在Linux上像foo.elf
并在OSX上像foo.macho
一样工作,也许可以使用一些巧妙的技巧使文件与两种格式兼容? / p>
答案 0 :(得分:1)
否,不可能有同时被识别为ELF和MACH-O文件的二进制文件。该计划已分解为前四个字节:
.ELF
,而0xFEEDFACE
或0xFEEDFACF
(取决于位宽)。假设系统实际上检查了魔术字节,则无法创建同时为ELF和MACH-O文件的文件。
答案 1 :(得分:1)
是否有一种创建文件foo的方法,该文件的作用类似于Linux上的foo.elf和OSX上的foo.macho
是的,有:shell archive。
有效地,您创建一个微型外壳程序,该程序决定运行foo.elf
还是foo.macho
,然后在将该程序提取到临时目录后调用该程序。两个本机可执行文件都可以存储在例如压缩的zip文件,因此可以最大程度地减少运输未使用的二进制文件的开销。
也许使用一些巧妙的技巧使文件与两种格式兼容?
这是不可能的(如Joachim Breitner正确解释的那样)。