Категорії
OpenBSD

Динамические библиотеки

Если у ваш бинарник пишет, что не может найти библиотеку, а она физически есть – выход один, путь к библиотеке не прописан. И так: как быть и что делать?

1) Проверка

#ldd /usr/local/bin/exim:
        Start    End      Type Open Ref GrpRef Name
        1c000000 3c039000 exe  1    0   0      /usr/local/bin/exim
        0301f000 23028000 rlib 0    2   0      /usr/lib/libm.so.7.0
        0cbba000 2cbbf000 rlib 0    1   0      /usr/lib/libwrap.so.4.0
        02974000 22a53000 rlib 0    1   0      libiconv.so.6.0 => not found

как видим, для бинарника exim требуется библиотека libiconv.so.6.0, которую он не может найти.

2) Поиск библиотеки.

# find / -name libiconv.so.6.0 -print
/usr/local/lib/libiconv.so.6.0

то есть библиотека всё-таки есть, просто Exim не ищет в папке /usr/local/lib.

3) Просмотр текущего поиска библиотек.

# ldconfig -r | grep 'search directories'
search directories: /usr/lib

откуда видно, что поиск производится только в папке /usr/lib.

4) Добавление пути.

Что бы добавить нужный путь, выполним такую команду.
Будьте осторожны, так как команде требуется передать не только новый путь, но и все старые, соблюдая порядок!

# ldconfig /usr/lib /usr/local/lib

и проверим:

# ldconfig -r | grep 'search directories'
search directories: /usr/lib:/usr/local/lib

то есть всё впорядке.

PS. лучше запускать с ключами “mR” для добавления, а не замены

# ldconfig -v -m -R /usr/local/lib

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff