Полный текст
Создаём свой исполняемый файл на Linux: глубже, чем вы думалиКогда-нибудь задумывались, как программы запускаются «изнутри»? Мы начинаем цикл статей о создании слоя совместимости для запуска Windows-приложений на Linux, но начнём с самого простого — собственного исполняемого файла.Забудем про «Hello, World!» и напишем простейшую программу на ассемблере, которая просто вернёт число 74. Дальше — магия! Мы возьмем её байт-код и попробуем запустить «вручную» через C, попутно словив segmentation fault и разобравшись с правами доступа к памяти с помощью mmap.А что, если создать свой собственный формат исполняемого файла? Мы придумаем SEF (Simple Executable File), состоящий из магии, смещения до точки входа и самого кода. Затем напишем утилиту, которая будет создавать и запускать такие файлы.Готовы нырнуть в системное программирование и посмотреть на запуск программ под совершенно новым углом? Узнаем, как это работает на самом низком уровне.