Чи можу я використовувати власний 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 тощо.
zladilocks

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.