На 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