На Redox заработала динамическая линковка для gitoxide, Bash 5.3, OpenTTD и трёх музыкальных программ
23.06.2026Шесть программ переведены на динамическую линковку: gitoxide, GNU Bash 5.3, OpenTTD, Schism Tracker и OpenJazz. Это продолжение работы над динамическим линкером — без его починок сборки динамически просто не запускались.
Статическая и динамическая линковка
При статической линковке нужный код копируется внутрь программы. Она ничего не зависит от системы, но раздувается: у каждой программы своя копия libc, и любая правка в библиотеке требует пересборки всего, что её использует.
При динамической линковке программа обращается к общей библиотеке в момент запуска. Файл получается меньше, общая библиотека обновляется один раз, и две программы делят один экземпляр кода в памяти. Плата — требование найти нужную версию библиотеки при старте, что и делает работу линкера чувствительной к любой ошибке в нём.
Что перевели
GNU Bash обновлён с 5.2.15 до 5.3 и переведён на динамическую линковку — это заметно, потому что оболочка запускает всё остальное. Для gitoxide включена частичная динамическая линковка. OpenTTD, Schism Tracker и OpenJazz переведены на неё полностью.
Почему это стало возможно только сейчас
Динамическая линковка на Redox несколько лет была в зачаточном состоянии из-за ошибок в динамическом линкере: в частности, порядок релокаций PLT приводил к неверным адресам, что ломало программу на первом же вызове внешней функции. Эти ошибки чинили в том же июне, и только после этого появился смысл переводить программы — иначе каждая из них падала бы при запуске.
Что это значит для сборки программ на Rust
gitoxide — набор инструментов на Rust для работы с репозиторием Git. Его перевод на динамическую линковку показывает, что сборка с общей библиотекой на Redox работает и для программ на Rust. Это обычно даёт меньший размер исполняемого файла, что важно для систем, где дистрибутив собирают с нуля.
Оригинал
Коммиты в репозитории redox-os/redox от 23 июня 2026 года: schismtracker: compile dynamically, openttd: compile dynamically, openjazz: compile dynamically; обновление Bash — Update bash and remove patches от 10 июня
Упоминаний: 1 · Просмотров: 2