在Linux机器上运行Mach-O 64位二进制文件的替代方法是什么?

6

步骤1: 我在一台64位的Linux机器上运行。
(命令):uname -a
(结果):Linux ****** 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux。

步骤2: 我检查了我想运行的“二进制文件”的文件类型。
(命令):file keymaker
(结果):keymaker: Mach-O 64-bit x86_64可执行文件,标志:<NOUNDEFS|DYLDLINK|TWOLEVEL|PIE>

步骤3: 我通过更改文件权限使“mach-o”文件可执行。 (命令):chmod +x keymaker

步骤4: 我运行了“二进制文件”。
(命令):./keymaker
(结果):bash: ./keymaker: 无法执行二进制文件:执行格式错误

步骤5: 当我在stack overflow上搜索类似的问题时,我找到了一个答案。但它说:
(答案):目前没有适用于Linux的工作Mach-O加载器。
(参考):我能在Linux上运行Mach-O可执行文件吗?

步骤6: 我在我的Linux机器上安装了一个“Linux版本”的应用程序,但我需要运行这个“keymaker文件”来为我提供“许可证密钥”。
而且我不想安装一个完整的(4GB +)MAC OS操作系统,可能是在虚拟机中只是为了运行一个简单的二进制文件。
我知道这是一个MAC OS文件,但我的理论是,既然我们可以使用“wine应用程序”来运行Windows OS应用程序,那么对于MAC OS需求也一定有替代品。


1
没有这样的解决方案,而且即使有,也不能保证它能够与该文件一起正常工作。就像wine只是有时候甚至部分地工作一样。问题不在于可执行文件格式,而是预期由那个“简单二进制文件”所使用的底层操作系统资源,特别是考虑到所有不同类型的操作系统。请注意,iOS并不等同于Mac OSX,它们之间有很大的区别。 - arkascha
我仍然相信有一个解决方案,可能基于这样一个事实:可能有一个由Shinichiro Hamaji编写的Linux Mach-o加载器......在“其他实现”标题下。参考:https://en.wikipedia.org/wiki/Mach-O - steven7mwesigwa
1
如上所述:加载可执行文件并不能解决问题。你缺少操作系统服务。 - arkascha
@arkascha,感谢您对iOS和Mac OSx不同之处的澄清……我一直以为它们是相同的。 - steven7mwesigwa
@arkascha,您的意思是说只有在Mac OSx操作系统上运行这个“二进制文件”才能成功吗? - steven7mwesigwa
1
我无法告诉你。这显然取决于应用程序期望和使用的操作系统服务和/或资源。再说一遍:似乎你认为成功使用某个“二进制文件”所需的全部就是将其加载到内存中。这是错误的。即使是静态链接的二进制文件,也需要不同的服务和/或资源可用。 - arkascha
1个回答

5

你提到的答案是2010年的。不幸的是,它似乎仍然适用。

你在评论中提供的链接更有趣一些,因为它链接到Darling项目,该项目声明:

Darling是一个翻译层,允许您在Linux上运行未经修改的macOS二进制文件。本质上,它类似于众所周知的Wine项目。

哇,正是你要求的!但它看起来仍处于早期阶段,不面向最终用户:

目前,它还不能运行带有GUI的macOS应用程序。

TL/DR:你应该尝试Darling项目。它能否启动你的程序还远非确定,但如果你的程序不使用GUI,那么它似乎是你最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接