[英]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。 但是,這將需要您使用兩組庫。 (二進制文件不沖突,所以基本上沒問題)
我最近發現了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.