16.12.2007

Prelink и DT_GNU_HASH

Вот вспомнил об одной хорошей вещи, которой, как и любой хорошей вещью, пользуюсь часто, а вспоминаю редко. Есть такая техника - prelink. Дело в том, что при запуске бинарники линкуют целое море библиотек. Чем сложнее программа, тем библиотек больше. Prelink позволяет сократить время на выбор этих библиотек, что приводит к ускорению запуска программ. Особенно эффективно это должно работать для приложений KDE, которые пишутся на C++, который вообще линкует за малым не всё что есть в /usr/lib.

Теперь о плохом.

В Ubuntu, начиная с версии 7.04 используется новый способ линкования (DT_GNU_HASH), что в общем-то даже лучше, чем использовать prelink. Эта новость каким-то, на первый взгляд, мистическим образом прошла мимо меня. До сегодняшнего дня я продолжал исправно использовать уже бесполезный prelink.

Собственно о том, что DT_GNU_HASH используется я узнал на ubuntuforums.org. Полез смотреть release notes, но там ничего не нашел. Версия мистики испарилась. Потом удалось найти лог из IRC-канала разработчиков в котором выясняется почему в примечаниях к релизу ничего не сказано =).

Подробнее об оптимизации динамического линкования можно прочитать вот в этой статье (язык вражий, на родном ничего интересного не нашел).

Комментарии

17.12.07 05:45 Anonymous комментирует:

А с чего бы это prelink стал бесполезным, позвольте осведомиться? Допустим, на Debian Etch 4r0 для себя использование prelink’а я нахожу очень даже оправданным, т.к. наблюдаю более быстрый запуск иксов с композитным менеджером. Или меня глючит?

17.12.07 05:56 uptimebox комментирует:

Нет, не глючит. Всё так и есть. Для Debian. А для Ubuntu prelink прироста производительности не даст.