Difference between revisions of "Prelink (Русский)"

From ArchWiki
Jump to: navigation, search
(use category with English base title, see Help:I18n#Article_titles)
Line 1: Line 1:
[[Category:Программное обеспечение (Русский)]]
+
[[Category:Software (Русский)]]
 
[[Category:Русский]]
 
[[Category:Русский]]
 
[[en:Prelink]]
 
[[en:Prelink]]

Revision as of 14:38, 16 December 2013

Warning: В системах с glibc 2.13, prelink работал не корректно, что приводило к невозможности загрузки системы. Используйте prelink и glibc 2.13 с осторожностью. Дополнительно можно почитать https://bbs.archlinux.org/viewtopic.php?pid=884465. Исправлено в glibc 2.13-4 (смотрите https://bugs.archlinux.org/task/22656)

Введение

Большинство приложений используют разделяемые библиотеки. Библиотеки могут быть интегрированы в программу при компиляции (статическое связывание), либо подгружаться при запуске программы (динамическое связывание). Одним из преимуществ динамической компоновки, является уменьшение размера исходной программы и более простое обслуживание, но при запуске программы возникает необходимость в поиске нужных библиотек. Так как библиотеки располагаются на диске в произвольных местах,- увеличивается время запуска программ и падает производительность. prelink, выполняя предварительное связывание, позволяет уменьшить этот недостаток. При возникновении проблем динамическое связывание всегда можно отменить. Не стоит забывать, что при обновлении библиотек процесс связывания необходимо запускать заново.

Установка

Установка Prelink при помощи pacman

pacman -S prelink

Настройка

Все настройки программы находятся в файле /etc/prelink.conf

Использование

Предварительное связывание

Команда prelink выполнит связывание всех бинарных файлов, расположенных в директориях, которые указанны в /etc/prelink.conf

# prelink -afmR
Описание опций:
Опция Описание
a All, применить предварительное связывание ко всем выполняемым файлам.
f Вынуждает повторить предварительное связывание для файлов, которые уже подвергались ему. Это требуется т.к. программа prelink прекращает обработку существующих старых связанных файлов, зависимые библиотеки которых могли измениться.
m Сохраняет пространство виртуальной памяти. Это требуется, если вы имеете много библиотек, которые необходимо связать.
R Random, -- Выбирает случайный порядок адресов, это увеличивает безопасность против переполнений буферов.

Для получения дополнительной информации о prelink выполните:

$ man prelink
Warning: Следует отметить, что при недостатке свободного места, в момент выполнения предварительного связывания для всей системы, существует вероятность усечения выполняемых файлов. Результатом может стать испорченная система. Используйте команду file или readelf для проверки целостности выполняемых файлов. Также вы можете заранее проверить наличие свободного места командой df -h

Отмена предварительного связывания

Отменить предварительное связывание для всех бинарников:

# prelink -au

Советы & Решение проблем

Ускоряем KDE

Уменьшить время загрузки KDE можно выполнив предварительное связывание и отключив kdeinit (после связывания становится не нужен). Создать файл ~/.kde4/env/имя_файла.sh (имя файла может быть любое) следующего содержания:

#!/bin/bash
export KDE_IS_PRELINKED=1

После связывания не работает программа

Можно добавить программу в список игнорируемых, для этого следует отредактировать файл /etc/prelink.conf, добавив в него строку вида:

-b /путь_к_исполняемому файлу

Например:

-b /usr/bin/skype

Затем переустановить программу.

Полезные ссылки