簡體   English   中英

在 Mac OS X 下模擬 Linux 二進制文件

[英]Emulating Linux binaries under Mac OS X

如何在 Mac OS X 下運行 Linux 二進制文件?

谷歌搜索我找到了幾個模擬器,但沒有一個可以在 Mac 上運行 Linux 二進制文件。 有很多關於在 Linux 上運行 Mac OS X 之類的帖子 - 但這與我想要做的相反。

更新:

感謝所有的答案! 我完全了解 MacPorts 和 Fink 或任何其他東西; 不,我不想要任何這些實用程序,我也不想要任何包管理器,我更喜歡自己編譯。 我也有 Parallels,可以設置虛擬機和所有爵士樂......

我唯一想做的就是找到一種方法來運行我沒有源代碼並已為 Linux 編譯的二進制文件,但我不想在 Linux 下運行它,而是在 Mac OS X 下運行它。因此我的關於模擬器的問題。

嗯,有一個項目將 Linux 的 binfmt_misc 之類的東西引入 OS X,所以現在你需要的是一個 ELF 加載器,一個可以加載 Mach-O 和 ELF 的動態鏈接器,以及一些將 Linux 調用轉換為 OS X 調用的機制。

只是為了獲得靈感,您可以以忽略文件擴展名的方式實現動態鏈接器 - 可以加載 libfoo.so.1(作為 Linux ELF)和 libfoo.1.dylib(作為 Mach-O),以便操作系統可以重用 X 版本的系統庫,這樣您就不需要編寫“托管在 OS X 上”的 libc.so,系統調用可以由 kext 處理,該 kext 將 Linux 調用轉換為內核中的 OS X 調用。

或者,以更優雅的方式,將精簡的 Linux 內核實現為使 OS X 內核具有雙重用途的 kext。 但是,這將需要您使用兩組庫。 (二進制文件不沖突,所以基本上沒問題)

設置一個虛擬機(我個人使用 VMWare Fusion),然后在虛擬機上安裝您想要的任何 Linux 發行版。

或者,如果您有 Linux 程序的源代碼,您很有可能可以在 Mac 上重新編譯它並在本機運行它。 如果你安裝FinkMacPorts ,你可以毫不費力地安裝很多開源程序。

我最近發現了Noah ,你可以用它在 macOS 上運行 Linux 二進制文件。 您可以通過自制軟件安裝 Noah( brew install linux-noah/noah/noah )。 那么你應該能夠做到這一點:

noah linux_binary

根據我的經驗,二進制文件的行為與我在 Ubuntu 機器上看到的相匹配。

使用 Qemu 的用戶空間模擬器在 Mac OS X 下運行 Linux 可執行文件可能會有一些運氣

如果您決定走虛擬化路線,還可以考慮VirtualBox

此外,如果您只需要類似 UNIX 的命令行工具,還有MacPorts項目。 這基本上是我在 Mac 上設置git :安裝 MacPorts 后,您只需運行sudo port install git命令即可在您的系統上安裝git

noah不允許二進制文件為我正確執行。 使用Mac 版 Docker 桌面

只需這樣做: 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 ,

盡管在Dockerfile之前將WORKDIR /docker_stuff行添加到ENTRYPOINT可能是最好的。

如果您將ENTRYPOINT更改為

ENTRYPOINT ["bash", "-c"]並添加

CMD ["your_binary"]

在它下面,您實際上可以將命令傳遞到圖像中,例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM