Почему Windows Exe не работает в Linux?

Я не спрашиваю о том, как заставить exe работать в Linux.

Я спрашиваю, почему это не работает.

Что отличает нас от того, как Windows запускает исполняемый файл, а Linux запускает исполняемый файл? Почему они должны отличаться? Кроме того, почему в исполняемых файлах linux нет расширения файла?

В исполняемых файлах Linux и Windows используются разные форматы. Linux использует формат ELF для большинства архитектур, в то время как Windows использует формат PE . ELF лучше подходит для того, как Linux управляет разделяемыми библиотеками, а PE лучше подходит для того, как Windows управляет разделяемыми библиотеками, но нет основополагающей причины, почему Linux не может выполнять исполняемые файлы PE или исполняемые файлы Windows ELF. Фактически Linux может выполнять исполняемые файлы PE через Wine .

Трудность состоит в том, что Windows и Linux имеют совершенно разные API : у них разные интерфейсы ядра и наборы библиотек. Чтобы фактически запустить приложение Windows, Linux должен будет эмулировать все вызовы API, которые делает приложение. Это большая работа. Вино делает это в некоторой степени, но это очень сложно, особенно потому, что производитель Windows не сотрудничает. Вы можете сравнить его с, скажем, изучением английского языка, когда ваш родной язык является китайским: исполняемый формат – это алфавит (не так сложно овладеть), API – это словарь (требуется годы, чтобы достичь уровня, на котором вы можете начать читать литературу ).

В двоичных файлах Windows есть другой ABI и используется другой API, чем в бинарных файлах Linux.

Для двоичных файлов Linux не требуется расширение, потому что * nix использует бит разрешений для идентификации исполняемого файла вместо расширения.

Вот как я слышал, как сторона окна объясняла словарям программистов.

В Windows есть крючки в программах и ОС, которые Exe делают вызовы, которые просто не будут в Linux. Из-за различий в обеих средах. Изначально Linux ищет разрешения, Windows ищет связанный формат сначала, исследуя расширение, просматривая свойства, затем просматривая файл Exe и т. Д.

Есть такие приложения, как Netbackup, которые запускались в Linux и были модифицированы для работы в среде Windows с использованием винного IMHO, часто это одни из самых стабильных в работе приложений Windows.

Когда Windows Apps. Становятся неуправляемыми, как правило, потому, что некоторые из этих крючков, удерживаемых приложением, не были полностью выпущены, и окна думают, что они (утечки памяти). Когда Windows передает это незапущенное пространство памяти в другое приложение Crash и burn.

  • В чем разница между «su» и дефисом?
  • Требуется ли VirtualBox / CentOs для правильной работы двух адаптеров?
  • Несколько шлюзов по умолчанию
  • Поддержка CentOS и / dev / midi
  • Как настроить SSH, чтобы он не пытался автоматически загружать все файлы удостоверений?
  • Ssh через маршрутизатор без переадресации портов
  • Утилита Linux для поиска самых больших файлов / каталогов
  • Предотвращение остановки уже запущенного фонового процесса после закрытия SSH-клиента
  • Простой mdadm RAID 1, не активирующий запасной
  • Почему невозможно изменить размер / перемещение монтируемых (не логических) разделов во время выполнения?
  • Не удается войти с PuTTY в RasPi 3 + OSMC
  • Давайте будем гением компьютера.