Могу ли я использовать свой собственный ld.so.cache?


14

ldconfig имеет два интересных варианта:

-f conf
      Use conf instead of /etc/ld.so.conf.
-C cache
      Use cache instead of /etc/ld.so.cache.

Я попытался скопировать /etc/ld.so.confв свой домашний каталог, и отредактировал его, чтобы включить пути к моим локальным библиотекам, например, /home/syockit/local/usr/libи т. Д. И побежал

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache

и впоследствии, чтобы подтвердить, что библиотеки кэшируются, я запустил

ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less

и он включает в себя все мои библиотеки, а также системные библиотеки.

Теперь я хочу, чтобы компоновщик по умолчанию использовал эти два. Но man ld.soя не вижу упоминания о возможности использования пользовательских .confили .cache. Так в чем же смысл этих двух вариантов ldconfig?

Ответы:


9

Я думаю, что ответ на ваш вопрос - нет, хотя вы можете сделать то же самое и другими способами.

в man ld.so я не вижу упоминания о возможности использования пользовательских .conf или .cache

Правда, но есть упоминания о $LD_LIBRARY_PATHи, и --library-pathпервое более широко полезно.

в чем смысл двух вышеупомянутых вариантов ldconfigтогда?

Таким образом, вы можете создать кеш, не перезаписывая системный и не используя системные настройки.


... просто ради этого? Или это для системной криминалистики?
syockit

1
Это может быть системный образ или окружение chroot и т. Д.
goldilocks

5

/etc/ld.so.confтолько чтение ldconfig(программа генерации кэша), но не ld.so(динамический загрузчик). Вы можете изменить местоположение файла конфигурации, если хотите создать кеш, отличный от системного по умолчанию.

/etc/ld.so.cacheчитается, ld.soи вы не можете заставить его читать из другого места. Тем не менее, может быть полезно передать другое местоположение вывода ldconfig. Наиболее распространенным вариантом использования, вероятно, является среда chroot . Вы можете использовать ldconfig -r /some/rootдля запуска ldconfigна альтернативном корне и размещать вывод в любом месте (внутри или вне этого корня). Вам нужно будет либо выдать выходные данные, /some/root/etc/ld.so.cacheлибо скопировать их туда позже. Существуют и другие довольно неясные варианты использования, например, если вы хотите работать ldconfigкак непривилегированный пользователь (который не может писать /etc/ld.so.cache), а затем переместить файл на место позже.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.