Ldconfig что это
/sbin/ldconfig -l [ -v ] библиотека .
ОПИСАНИЕ
ldconfig создаёт необходимые привязки и кэш для большинства необходимых динамических библиотек, найденных в каталогах, которые указываются в командной строке, в файле /etc/ld.so.conf , и в доверенные каталогах ( /lib и /usr/lib ). Созданный кэш используется компановщиками ld.so и ld-linux.so , которые выполняют связывание во время выполнения. ldconfig проверяет заголовок и имена файлов библиотек, их столкновения, когда определяется какая версия должна иметь более новые ссылки.
ldconfig будет пытаться вывести заключение о типе ELF библиотек (т.е. libc5 или libc6/glibc), основанных на библиотеках языка C и о том какая библиотека должна быть связана. Поэтому, при создании динамических баблиотек, явно указывают на связывание с libc (используя -lc).
Некоторые существующие библиотеки не содержат необходимую информацию, чтобы сделать вывод об их типе. Поэтому файл /etc/ld.so.conf разрешает задавать ожидаемый тип. Эта возможность используется только для тех ELF библиотек, с которыми мы иначе не можем работать. Формат выглядит как «dirname=TYPE», где TYPE может принмать значение libc4, libc5 или libc6. (Данный синтаксис работает также и в командной строке). Пробелы не разрешаются. Также смотрите опцию -p . ldconfig обычно должен запускаться суперпользователем, так как выполнение может требовать прав на запись в некоторые каталоги и файлы, владельцем которых является root.
ОПЦИИ
-v Режим подробностей. Выдаётся номер текущей версии, имя каждого каталога, который сканируется и все создаваемые символьные ссылки. Перекрывает режим молчания. -n Обрабатывать только каталоги, заданные в командной строке. Не обрабатывать ни доверенные каталоги ( /lib и /usr/lib ) ни те, которые заданы в /etc/ld.so.conf . Неявно включает -N . -N Не перестраивать кэш. За исключением случая, когда также задаётся -X , ссылки будут обновлены. -X Не обновлять ссылки. За исключением случая, когда также задаётся -N , кэш будет перестроен. -f conf Использовать conf вместо /etc/ld.so.conf . -C cache Использовать cache вместо /etc/ld.so.cache . -r root Изменить и использовать root в качестве корневого каталога. -l Библиотечный режим. Ручное связывание отдельных библиотек. Предназначен только для экспертов. -p Выдать список каталогов и библиотек-кандидатов, сохранённый в текущем кэше.
ФАЙЛЫ
/lib/ld.so динамический компановщик /etc/ld.so.conf Файл, содержащий список разделённых двоеточием, пробелом, табуляцией или символом новой строки, каталогов, в которых производится поиск библиотек. /etc/ld.so.cache Файл, содержащий сортированный список библиотек, найденных в каталогах, заданных в /etc/ld.so.conf .
ldconfig — команда Linux — команда Unix

Команда ldconfig Linux создает необходимые ссылки и кэш (для использования компоновщиком времени выполнения, ld.so ) с самыми последними общими библиотеками, найденными в каталогах, указанных в командной строке, в файле /etc/ld.so. conf и в доверенных каталогах ( / usr / lib и / lib ). Он проверяет заголовок и имена файлов библиотек, с которыми сталкивается, при определении того, какие версии должны иметь обновленные ссылки; игнорирует символические ссылки при сканировании библиотек.
Ldconfig будет пытаться определить тип библиотек ELF (т. Е. Libc 5.x или libc 6.x (glibc)), основываясь на том, с какими библиотеками C, если есть библиотека, с которыми была связана библиотека, поэтому при создании динамических библиотек целесообразно явно ссылка на libc (используйте -lc).
Ldconfig обычно должен запускаться суперпользователем, так как для этого может потребоваться разрешение на запись в некоторые корневые каталоги и файлы . Если вы используете опцию -r для изменения корневого каталога, вам не нужно быть суперпользователем, если у вас достаточно прав на это дерево каталогов.

конспект
Команда принимает следующий общий формат:
Команда Linux ldconfig с примерами
Команда Linux ldconfig создает, обновляет и удаляет доступные символические ссылки для текущих совместно используемых библиотек. Символические ссылки основаны на каталогах lib в /etc/ld.so.conf. Команды Linux зависят от общих библиотек. Несколько команд и исполняемых файлов часто совместно используют библиотеки, подразумевая, что каждый из них может использовать библиотеку, не затрагивая другой.
Эти общие библиотеки требуют средств управления ими. Работа ldconfig заключается в создании необходимых ссылок и кеша, полезного для управления общими библиотеками. Давайте посмотрим, как использовать команду ldconfig.
Как использовать команду ldconfig
ldconfig проверяет имена файлов и заголовки для различных библиотек, чтобы определить, какие из них имеют наиболее обновленные ссылки при обновлении файлов ссылок.
Кроме того, он создает файл /etc/ld.so.cache, помогающий ускорить связывание библиотек компоновщиком времени выполнения.
Файл конфигурации, содержащий общие библиотеки, используемые ldconfig, находится по адресу /etc/ld.so.conf. Файл конфигурации предписывает ldconfig использовать все файлы конфигурации в указанном каталоге. Если вы откроете файл, он будет содержать одну строку.

1. Использование ldconfig для отображения библиотек из кэша
ldconfig может отображать все находящиеся в данный момент файлы в кеше. Он показывает всю библиотеку и указывает ее расположение в командной строке.
Команда для использования:
$ ldconfig -p | head -5
Мы добавляем «head», чтобы уменьшить вывод библиотек за счет печати первых пяти строк.

2. Показать все библиотеки
Вы можете отобразить каждую библиотеку в каждом каталоге, используя опцию «-v». Команда проходит через каждый каталог в системе, печатая имя каталога и соответствующие ссылки, созданные под ним.
Однако некоторые каталоги, перечисленные в /etc/ld.so.conf, не существуют. Вы можете заметить некоторые сообщения об ошибках в выводе.
$ ldconfig -v

3. Добавление новых библиотек
Когда новая программа устанавливается путем ее компиляции из исходного кода, вы должны сообщить системе об этой новой библиотеке. Есть два способа сделать это.
Первый — использовать команду ldconfig с параметром «-n» и напрямую обновлять ссылки, используя только новую библиотеку. Однако этот метод не создает кеш. Он только обновляет ссылку на новую библиотеку. Например, если вы установили такую программу, как veil, в каталог /opt, следующая команда напрямую обновит ссылку на библиотеку:
$ ldconfig -n / opt / dummy / lib
Кроме того, вы можете использовать редактор, например vi, и добавить /veil/lib в /etc/ld.so.conf, чтобы выполнить ldconfig для обновления всех ссылок. .
Приведенная ниже команда откроет файл конфигурации, в который вы можете добавить файл /opt/veil/lib. Обратите внимание, что veil — это наша программа-пример. Замените его на тот, который вам нужно добавить в вашем случае.
$ vi / etc / ld.so.conf
Чтобы обновить кеш, выполните следующую команду от имени пользователя root:
Вы можете убедиться, что библиотека была добавлена, запустив опцию «-v» и grep имя библиотеки. Например, мы можем проверить, доступна ли библиотека libFLAC , с помощью следующей команды:
$ ldconfig -v grep -i libFLAC
Если он присутствует, он должен вернуть вывод, аналогичный приведенному ниже:

У ldconfig есть и другие команды, и вы можете получить к ним доступ с его справочной страницы. Однако те, что мы перечислили с использованием предыдущих примеров, — это то, что вам нужно знать при работе с библиотеками и программами.
ldconfig помогает работать с разделяемыми библиотеками. Кроме того, также можно увидеть общие библиотеки, используемые данной командой. Вы можете использовать команду «ldd», за которой следует программа — например, такая программа, как echo.
Ldconfig самая полезная команда для новичков сборки в Linux
Рано или поздно любой из начинающих изучать Линукс сталкивается с такой задачей как сборка (компиляция) какого-либо пакета (программы) из исходных кодов (source code). Такая необходимость возникает довольно часто при обновлении программного продукта, либо его установки из CVS источников, либо вообще есть программные продукты которые не распространяются в package (rpm, deb) формате, а только в исходных кодах.
По сути дела задача довольно тривиальная и сводится, как правило, к набору команд ./configure; make; make install, да к тому-же весь процесс сборки и инсталяции подробно описывается в пояснительных файлах пакета, к примеру README, INSTALL, INSTALL-SOURCE, documentation, SOURCE и т.п., хотя это далеко не факт, что такие описания могут вообще присутствовать.
Все бы ничего, но, камнем преткновения при сборке становятся самые распространенные ошибки, звучащие к примеру так:
error while loading shared libraries: xxxx.so.0 cannot open shared object file no such file or directory
Все эти ошибки вызваны одним: Ваш сборщик объектных файлов не смог найти необходимых ему библиотек сопутствующих продуктов, необходимых для полной корректной сборки. Конечно, можно залезть в скрипт сборки и начать там ручками править пути к этим библиотекам, хотя за Вас это должен был сделать конфигуратор, но случается что и он то-же не панацея, вобщем это не наш путь, наша палочка-выручалочка утилита ldconfig, которая создает необходимые связки и формирует кэш динамических библиотек установленных в Вашем Линуксе.
Вам всего лишь необходимо отредактировать файл /etc/ld.so.config, в котором хранятся пути к необходимым библиотекам. К примеру, можно забить туда строки:
/usr/local/lib /usr/local/lib/mysql
и выполнить с консоли команду ldconfig, после которой эта утилита просмотрит указанные ей директории на наличие там библиотек и поместит ссылки на них в кэш.
Просмотреть, какие-же библиотеки в данный момент находятся в кэше можно командой:
ldconfig -p
И в ответ Вы получите длиннющий список, а поэтому, для более удобной конкретики, чтобы посмотреть, есть ли у Вас библиотеки от пакета mysql, можно так:
# ldconfig -p | grep mysql libmysqlclient.so.10 (libc6) => /usr/local/lib/mysql/libmysqlclient.so.10 libmysqlclient.so (libc6) => /usr/local/lib/mysql/libmysqlclient.so
Поначалу, в пору своей первобытности в Линуксе, сам неоднократно наступал на эти грабли, и мои друзья на них наступали, и друзья моих друзей получали эти шишки . и самое интересное, что пока, кроме Интернета, ни в одной книжке по Линукс я не встречал больших рекламных плакатов: «Изучите работу ldconfig. «, а стоило бы это кричать уже на первых страницах.
Короче, — берегите лоб, надеюсь я Вам помог в этом.
28 мая, 2007 , 15:36
handyblogger[at]gmail.com