Запуск исполняемых файлов в Linux и Windows отличается по нескольким параметрам:
- Определение исполняемости файла. 5 В Windows исполняемые файлы обычно имеют расширение .exe. 5 В Linux система определяет исполняемость файла не по расширению, а по специальному флагу исполняемости. 3 Если файлу предоставлено разрешение на выполнение, система поймёт, что его можно запустить. 5
- Внутренний формат исполняемых файлов. 1 Windows использует PE-формат, а Linux — ELF (исполняемый файл и формат привязки). 1 Windows не знает, как загружать и выполнять файлы ELF, а Linux — как загружать и выполнять файлы PE. 1
- Системные вызовы. 2 Набор системных функций и способы их вызова в каждой ОС разные. 2 Например, в Linux для вызова функции read() бинарник записывает в регистр дескриптор файла, в регистр %rsi — указатель буфера, а в %rdx — количество байт для чтения. 2 Однако в ядре Windows нет функции read(), поэтому ни один из аргументов не имеет там смысла. 2
Для запуска исполняемых файлов в Linux из Windows можно использовать оболочку совместимости, например, WINE, а для запуска исполняемых файлов Linux в Windows — LINE. 1