Почему Windows Exe не работает в Linux?
Я не спрашиваю о том, как заставить exe работать в Linux.
Я спрашиваю, почему это не работает.
Что отличает нас от того, как Windows запускает исполняемый файл, а Linux запускает исполняемый файл? Почему они должны отличаться? Кроме того, почему в исполняемых файлах linux нет расширения файла?
- MySQL Workbench не присутствует в MySQL Community RPM для Fedora 21
- Что вызывает запросы активации Windows 7?
- Зацикливание файлов и сбор данных
- Пакетное преобразование PNG в JPG в Linux
- Добавление файла jar в CLASSPATH по-прежнему не выполняется
- Записи NDP в Linux
- Как вручную смонтировать файловую систему Linux как обычный пользователь?
- Рекурсивно заменяет каждый экземпляр слова в каталоге из командной строки linux
- Почему Windows требует перезагрузки намного больше, чем Linux?
- Адрес гостевой системы VMWare Fusion Linux по имени хоста?
- UnionFS одинаково в окнах, фактически объединять папки
- Отключение Google Chrome Загрузка автоматической нумерации для существующих файлов
- Как загрузить все зависимости пакета в автономном режиме
В исполняемых файлах 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.