如何在Mac OS X下运行Linux二进制文件?
Google搜索我发现了几个模拟器,但没有在Mac上运行Linux二进制文件。有很多关于在Linux上运行Mac OS X的帖子和那种东西 - 但这与我想做的相反。
更新
感谢所有答案!我完全了解MacPorts和Fink或任何其他事情;不,我不想要任何这些实用程序,我不想要任何包管理器,我更喜欢自己编译。我也有Parallels,可以设置虚拟机和所有爵士......
我唯一想做的就是找到一种方法来运行我没有源代码的二进制文件,并且已经为Linux编译了,但我不想在Linux下运行它但在Mac OS X下运行它因此我对模拟器的问题。
答案 0 :(得分:7)
设置虚拟机(我个人使用VMWare Fusion),然后在虚拟机上安装所需的Linux发行版。
或者,如果你有Linux程序的源代码,很可能你可以在Mac上重新编译它并本机运行它。如果您安装Fink或MacPorts,则可以安装很多开源程序而不会有太多麻烦。
答案 1 :(得分:7)
有一个项目向Linux X引入类似Linux的binfmt_misc,所以现在你需要的是一个ELF加载器,一个可以加载Mach-O和ELF的动态链接器,以及一些将Linux调用转换为OS X的机制
只是为了灵感,您可以以忽略文件扩展名的方式实现动态链接器 - libfoo.so.1(作为Linux ELF)和libfoo.1.dylib(作为Mach-O)都可以加载因此,OS X版本的系统库可以重复使用,因此您不需要编写“托管在OS X上”libc.so和syscalls可以通过kext来处理,该kext将Linux调用转换为内核中的OS X调用。
或者,以更优雅的方式,将精简的Linux内核实现为kext,使OS X内核成为双重用途。但是,这将要求您使用两组库。 (二进制文件没有冲突所以它基本上没问题)
答案 2 :(得分:4)
使用Qemu User Space Emulator
在Mac OS X下运行Linux可执行文件可能会有些运气答案 3 :(得分:4)
我最近找到Noah,您可以使用它在macOS上运行Linux二进制文件。您可以通过自制程序(brew install linux-noah/noah/noah
)安装Noah。然后你应该能够做到这一点:
noah linux_binary
根据我的经验,二进制文件的行为与我在Ubuntu机器上看到的相符。
答案 4 :(得分:2)
如果您决定采用虚拟化路线,请同时考虑VirtualBox。
此外,如果您只需要像命令行工具那样的UNIX,那么就有MacPorts项目。这基本上就是我在我的mac上设置git
的方式:安装完MacPorts后,只需运行sudo port install git
命令即可在系统上安装git
。
答案 5 :(得分:1)
noah
不允许二进制文件对我正确执行。使用Docker Desktop for Mac。
只需:
docker pull centos:latest # 73MB CentOS docker image
在Dockerfile中为运行二进制文件所需的文件夹创建一个文件夹:
FROM centos
COPY your_binary /bin/
ENTRYPOINT ["your_binary"]
您可以使用
进行构建 docker build -t image_name
然后执行
docker run image_name
就像二进制文件本身一样。为我工作。希望它可以帮助别人。而且,如果您需要特定的输出或将文件存储在某个位置,则可以使用-v
将卷装载到docker上,例如:
docker run -v path_to_my_stuff:/docker_stuff image_name
,
尽管最好在WORKDIR /docker_stuff
之前的Dockerfile
上添加ENTRYPOINT
行。
如果将ENTRYPOINT
更改为
ENTRYPOINT ["bash", "-c"]
并添加
CMD ["your_binary"]
在它的下面,您实际上可以将命令传递到图像中,例如
docker run -v path_on_local:/in_container_path image_name "your_binary some_parameters -optionrequiringzerowhitespacebeforeinputvalue"