Mac OS X和Linux之间的二进制兼容性
冒犯自己,这个问题可能会显得天真和/或愚蠢,因为我对诸如系统之类的unix的内部工作和编程一般来说还比较陌生。 准备?好!我将经历大约3个水平的可笑性,并随着操作的进行而增加。 我们有两个具有相似硬件的系统(主要是处理器,让我们说一个标准的Intel Core 2 Duo)。 一个正在运行(在此处插入您的Linux发行版:以后将使用Ubuntu),另一个正在运行,例如Mac OSX。 一个人编译一个等效的程序,让我们说一些类似的东西: int main() { int cat = 33; int dog = 5*cat; return dog; } 代码非常简单,因为我还不想考虑共享库的含义。 在各个系统上编译时。输出之间的主要区别不是ELF和Mach-O的问题吗?如果要剥离格式的每个二进制文件,而只保留一个平面二进制文件,那么反汇编的机器指令会不会相同?(根据编译器的习惯/倾向,可能会有一些差异)。 1.)如果要开发一种程序,以Mach-O格式重新包装从我们的Ubuntu系统产生的平面二进制文件,它将在Mac OS X系统中运行吗?然后,如果一个人只有上面假定程序的编译二进制文件,而一个人只有这个神秘的工具用于重新打包平面二进制文件,那么简单的程序是否可以在Mac OS X系统上运行? 现在让我们更进一步。 我们现在有一个程序,其源代码如下: #include <stdio.h> int main() { printf("I like tortoises, but not porpoises"); return 0; } 2.)假设该程序已编译并静态链接,我们的魔术程序是否仍然能够以Mach-O格式重新打包原始二进制文件,并使它在mac os X上运行?看起来它不需要依赖任何其他二进制文件(在这种情况下,mac系统不需要) 现在到了最后的水平; …