Emulating Linux binaries under Mac OS X

Viewed 20010

How do I run Linux binaries under Mac OS X?

Googling around I found a couple of emulators but none for running Linux binaries on a Mac. There are quite a few posts about running Mac OS X on Linux and that kind of stuff - but that's the opposite of what I want to do.

Update:

Thanks for all the answers! I am fully aware of MacPorts and Fink or any of the other things; and no, I do not want any of these utilities, and I do not want any of the package managers, I prefer to compile things myself. I also have Parallels and could set up virtual machines and all that jazz...

The only thing I want to do is to find a way to run a binary that I do not have the source code for and has been compiled for Linux, but I do not want to run it under Linux but under Mac OS X. Therefore my question about emulators.

6 Answers

Set up a virtual machine (I personally use VMWare Fusion) and then install whatever distro of Linux you desire on the virtual machine.

Or, if you have the source to the Linux program, chances are you can recompile it on a Mac and run it natively. If you install Fink or MacPorts, you can install a lot of open source programs without much trouble.

You might have some luck with running Linux executables under Mac OS X using Qemu's User Space Emulator

If you decide to go the virtualization route, consider also VirtualBox.

Also, if you only need UNIX like command line tools, there is the MacPorts project. This is basically how I set up git on my mac: after having installed MacPorts you just have to run the sudo port install git command to install git on your system.

noah does not allow the binaries to execute properly for me. Use Docker Desktop for Mac.

Just do: docker pull centos:latest # 73MB CentOS docker image

Make a folder for what is needed to run your binary, and in your Dockerfile:

FROM centos
COPY your_binary /bin/
ENTRYPOINT ["your_binary"]

and you can build it with

docker build -t image_name

then execute with

docker run image_name as if it were the binary itself. Worked for me. Hope it helps someone else. And if you need specific outputs or to store files somewhere you can mount volumes onto the docker with -v, for example:

docker run -v path_to_my_stuff:/docker_stuff image_name,

though adding a WORKDIR /docker_stuff line to the Dockerfile before ENTRYPOINT is probably best.

If you change ENTRYPOINT to

ENTRYPOINT ["bash", "-c"] and add

CMD ["your_binary"]

underneath it, you can actually pass the command into the image like

docker run -v path_on_local:/in_container_path image_name "your_binary some_parameters -optionrequiringzerowhitespacebeforeinputvalue"
Related