Mac怎么兼容Linux,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

int main()

{

printf("I like tortoises, but not porpoises");

return 0;

}

2.)假设该程序已编译并静态链接,我们的魔术程序是否仍然能够以Mach-O格式重新打包原始二进制文件,并使它在mac os X上运行?看起来它不需要依赖任何其他二进制文件(在这种情况下,mac系统不需要)

现在到了最后的水平;

3.)如果我们使用该假定程序将所有必需的共享库转换为Mach-O格式,然后使用动态链接编译上述程序,该怎么办。该程序仍然可以成功运行吗?

现在应该是这样,显然荒谬的每一步都依赖于先前的基础,甚至变得有意义。因此,如果第一根支柱遭到破坏,我怀疑其余层级会有很多好处。

我绝对不会想到带有GUI的程序来考虑这一点。窗口系统可能完全是另一个麻烦。在此阶段,我仅考虑命令行程序。

现在,我邀请世界来纠正我,并告诉我我荒谬的思维思路中的所有错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值