Есть ли способ запустить бинарный файл Linux на macOS?

16

Есть ли способ запустить бинарный файл Linux в macOS? Я пытался запустить двоичный файл, но он сказал, что он не исполняемый.

Сейед
источник
Это не будет работать. Ядро OSX несколько отличается от ядра Linux.
ott--
Ну, OS X не использует двоичные файлы elf, так что это немного похоже на попытку запуска Windows .exe. Тем не менее, краткий поиск находит это: osxbook.com/software/xbinary Если вы можете перекомпилировать свой код, это не проблема.
Орион
XBinary требует программы, которая знает, как запустить ваш двоичный файл; оно само по себе ничего не запускает.
saagarjha

Ответы:

8

Эти ответы наполовину верны, потому что виртуализация - это выбор, но есть и другой. Могу ли я представить ...

история

  1. Сначала был UNIX, около 1972
  2. Тогда временная шкала разделена
    • В 1977 году за 90 долларов Боб Фабри и другие скомпилировали / создали первые версии BSD, сокращенно от Berkeley Systems Distribution.
    • В 1991 году Линус Торвальдс опубликовал в группе новостей информацию о программном обеспечении, которое он использовал от Ричарда Столлмана, который основал GNU в 1983 году, и родился Линус UNIX.
    • Apple вновь приобрела NeXT Software в 1996 году, после того как Стив Джобс был уволен из Apple в 1984 году и использовал это программное обеспечение и людей там для создания OS X. OS X - это Darwin OS + NeXT Desktop Environment. И теперь мы возвращаемся к Bullet # 1, так как Дарвин является форком BSD с закрытым исходным кодом. Для проекта с открытым исходным кодом см. PureDarwin . Для официальной страницы разработчика Apple см. Apple Open Source .

Как мы можем использовать это

BSD традиционно используют систему портов для управления пакетами. Наиболее широко используемыми из них являются порты FreeBSD . Порты - это пакеты, установленные непосредственно из источника. Поскольку одни и те же приложения Linux поступают из одних и тех же источников , вы можете запустить приложение Linux, если его порт существует. Не используйте эти порты на Mac, потому что ...


Поскольку все графические интерфейсы Apple написаны с использованием API-интерфейса Cocoa - WikiEntry , поставляемого в комплекте с XCode - OS X для разработчиков , порты можно настроить, чтобы воспользоваться этим:

  1. Установите XCode для вашей версии OS X.
  2. Внутри XCode находится версия компилятора GCC от Apple и все другие связанные инструменты. Чтобы обновить инструменты, см. Этот пост в StackOverflow . Насколько мне известно, инструменты зависят от версии ОС, то есть они не имеют обратной совместимости (короче говоря, не устанавливайте XCode для 10.8 на 10.6 и т. Д.)
  3. После установки XCode у вас теперь есть компилятор, и вы можете перейти на страницу MacPorts и выбрать нужный порт после установки установщика MacPorts .pkg.

Предостережение

Система портов не обязательно выполняет проверку зависимостей, если порт не был хорошо написан. Я слегка затронул проблему, что означает elibc_FreeBSD в оверлеях portage gentoo?

eyoung100
источник
17

Я недавно начал использовать Noah для запуска бинарных файлов Linux в macOS. Вы можете установить с помощью homebrew ( brew install linux-noah/noah/noah). Тогда вы должны быть в состоянии сделать это:

noah linux_binary

По моему опыту поведение бинарного файла соответствует тому, что я вижу на моей машине с Ubuntu.

SND
источник
хотя команда работала и никаких ошибок не возникало, мои двоичные файлы не работали, как ожидалось
techkuz
2

Единственный способ, которым я знаю, что это можно сделать с помощью какой-то виртуализации . Например, вы можете использовать vagrant, который является своего рода оболочкой для Oracle VBox или VMware vmplayer. Другая вещь, которая иногда делается, это помещает это в контейнер, такой как докер .

скалистый
источник
2

Аппаратная эмуляция

Не напрямую! Да, как сказал Скалистый, вы должны виртуализировать его с VirtualBox , VMWare Fusion , который будет соответствовать вашему типу процессора.

Также есть Qemu , который будет виртуализировать разные типы процессоров, например Intel или Power и т. Д.

Эмуляция программного обеспечения

Существует также эмуляция программного уровня, с такими программами, как WiNE , и моей собственной программой emulayer (WiP). Обе эти программы частично эмулируют ОС Windows, конвертируя системные вызовы в POSIX.

Большинство приложений Linux будут работать на OSX с перекомпиляцией исходного кода.

bobbyjo
источник
Я исправил ваши ссылки для вас. Добро пожаловать в U & L.SE.
eyoung100