如何在Mac OS X下运行Linux二进制文件?
在谷歌上搜索了一下,我发现了几个模拟器,但没有一个是在Mac上运行Linux二进制文件的。有很多关于在Linux上运行MacOSX之类的文章--但这与我想做的相反。
更新:
感谢所有的答案!我完全了解MacPorts和Fink或其他任何东西;不,我不想要任何这些实用程序,我不想要任何包管理器,我更喜欢自己编译东西。我也有Parallels,可以设置虚拟机和所有爵士乐...
我唯一想做的是找到一种方法来运行一个二进制文件,我没有它的源代码,并且已经为Linux编译了,但我不想在Linux下运行它,而是在Mac OS X下运行它。关于模拟器的问题
7条答案
按热度按时间x7rlezfr1#
有一个项目将Linux的binfmt_misc引入OS X,所以现在你需要的是一个ELF加载器,一个可以加载Mach-O和ELF的动态链接器,以及一些将Linux调用转换为OS X调用的机制。
为了获得灵感,您可以以忽略文件扩展名的方式实现动态链接器-可以加载libfoo.so.1(作为Linux ELF)和libfoo.1.dylib(作为Mach-O),以便可以重用OS X版本的系统库,这样您就不需要编写“托管在OS X上”libc.so,并且可以通过kext处理syscalls,该kext将Linux调用转换为内核中的OS X调用。
或者,以一种更优雅的方式,实现一个精简的Linux内核作为一个kext,使OSX内核成为一个双重用途。但是,这需要使用两组库。(二进制文件不冲突,所以基本上没问题)
yruzcnhs2#
设置一个虚拟机(我个人使用VMWare Fusion),然后在虚拟机上安装任何你想要的Linux发行版。
或者,如果你有Linux程序的源代码,你可以在Mac上重新编译它并在本地运行它。如果你安装了Fink或MacPorts,你可以安装很多开源程序,而不会遇到太多麻烦。
vaqhlq813#
我最近发现了Noah,你可以用它在macOS上运行Linux二进制文件。你可以通过homebrew(
brew install linux-noah/noah/noah
)安装Noah。你应该能够做到这一点:根据我的经验,二进制文件的行为与我在Ubuntu机器上看到的相匹配。
xu3bshqb4#
您可能会在MacOSX下使用Qemu的用户空间模拟器运行Linux可执行文件
egmofgnx5#
如果您决定走虚拟化路线,还可以考虑VirtualBox。
此外,如果您只需要类似UNIX的命令行工具,那么还有MacPorts项目。下面是我在Mac上设置
git
的基本方法:安装MacPorts后,您只需运行sudo port install git
命令即可在系统上安装git
。xzabzqsa6#
noah
不允许二进制文件为我正确执行。使用Docker Desktop for Mac。Just do:
docker pull centos:latest # 73MB CentOS docker image
为运行二进制文件所需的内容创建一个文件夹,并在Dockerfile中:
你可以用
docker build -t image_name
然后执行
docker run image_name
就像是二进制本身一样。对我很有效希望它能帮助其他人。如果您需要特定的输出或存储文件,您可以使用-v
将卷挂载到Docker上,例如:docker run -v path_to_my_stuff:/docker_stuff image_name
,尽管在
ENTRYPOINT
之前向Dockerfile
添加WORKDIR /docker_stuff
行可能是最好的。如果将
ENTRYPOINT
更改为ENTRYPOINT ["bash", "-c"]
并添加CMD ["your_binary"]
在它下面,你可以像这样将命令传递到图像中
t8e9dugd7#
你也可以在类似Linux的chroot中尝试Actually Portable Executable