Эмуляция исполняемых файлов Linux под Mac OS X
Как запустить исполняемые файлы Linux в Mac OS X?
Попутно я нашел пару эмуляторов, но не для запуска исполняемых файлов Linux на Mac. Есть немало сообщений о работе Mac OS X на Linux и подобных материалах, но это противоположность тому, что я хочу сделать.
Update:
Спасибо за ответы! Я полностью осведомлен о MacPorts и Fink или о других вещах; и нет, я не хочу ни одной из этих утилит, и я не хочу ни одного из менеджеров пакетов, я предпочитаю сам компилировать. У меня также есть Parallels, и я могу настроить виртуальные машины и весь этот джаз...
Единственное, что я хочу сделать, это найти способ запуска двоичного кода, для которого у меня нет исходного кода, и он был скомпилирован для Linux, но я не хочу запускать его под Linux, но в Mac OS X Поэтому мой вопрос об эмуляторах.
Ответы
Ответ 1
Настройте виртуальную машину (я лично использую VMWare Fusion), а затем установите любой дистрибутив Linux, который вы хотите на виртуальной машине.
Или, если у вас есть источник для программы Linux, скорее всего, вы можете перекомпилировать ее на Mac и запустить ее изначально. Если вы установите Fink или MacPorts, вы может установить множество программ с открытым исходным кодом без особых проблем.
Ответ 2
Ну, есть проект, представляющий что-то вроде 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 и syscalls могут обрабатываться kext, который переводит вызовы Linux на OS X в ядре.
Или более элегантным способом реализовать урезанное ядро Linux как kext, которое делает ядро OS X двойным назначением. Однако для этого потребуется использовать два набора библиотек. (Binaries не сталкиваются, так что в основном это нормально)
Ответ 3
Возможно, вам повезло с запуском исполняемых файлов Linux в Mac OS X с помощью Qemu User Space Emulator
Ответ 4
Если вы решите пойти по пути виртуализации, рассмотрите также VirtualBox.
Кроме того, если вам нужны только инструменты командной строки UNIX, существует проект MacPorts. Это в основном то, как я настроил git
на моем mac: после установки MacPorts вам просто нужно запустить команду sudo port install git
для установки git
в вашей системе.
Ответ 5
Недавно я нашел Noah, который можно использовать для запуска исполняемых файлов Linux на macOS. Вы можете установить Noah через доморощенный (brew install linux-noah/noah/noah
). Тогда вы сможете это сделать:
noah linux_binary
По моему опыту поведение двоичного файла совпадает с тем, что я вижу на моей машине Ubuntu.