LINUX.ORG.RU

как для конкретного бинарника в ldconfig прописать конкретную библиотеку


0

1

Есть две системы назовём их 1 и 2
В 1 установлена программа sshfs из пакета fuse-sshfs-2.2-5.fc11.i586.rpm и прекрасно работает
Во второй пытался установить sshfs из исходников но не получилось:
./configure прошёл нормально, а make заругался:
/usr/include/glib-2.0/glib/gfileutils.h:108: ошибка: expected ‘)’ before ‘size’
make[1]: *** [sshfs-sshfs.o] Ошибка 1
Тогда я скопировал во вторую систему рпмку и раскрыл её скопировав бинарники, но при запуске sshfs заругался что библиотека libpthread.so.20.0.27 с ошибкой. Эти библиотеки в двух системах имеют одинаковые названия но они разные. Можно скопировать эту библиотеку из первой системы во вторую и тогда sshfs заработает, но вдруг эта библиотека нужна ещё какой нибудь программе именно та которая была, а не новая скопированная.
Можно создать папку в /usr/lib например libsshfs и скопировать эту библиотеку туда, но тогда вопрос как и где прописать в системе что бы при запуске sshfs эта программа использовала библиотеку /usr/lib/libsshfs/libpthread.so.20.0.27 а не /usr/lib/libpthread.so.20.0.27
За помощь заранее благодарен!

★★

Ответ на: комментарий от unsigned

не помогло, так же ссылается на библиотеку расположенную в /usr/lib а не на библиотеку расположенную в /usr/lib/libsshfs

v4567 ★★
() автор топика
Ответ на: комментарий от v4567

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

Полезный совет - поискать способ нормально установить ее. Что за вторая система-то?

unsigned ★★★★
()
Ответ на: комментарий от v4567

Всё проблему решил.
Немного я накрутил. sshfs вызывает первую библиотеку libfuse.so.2 а fuse у меня был собран из исходников и при сборке так же возникли такие проблемы с библиотеками и я ./configure указал другой путь где лежали те библиотеки которые нужны при этом он туда же установил и свои. А sshfs видимо был собран таким образом что если он не находил библиотеку libfuse.so.2 , а он её действительно не находил так как она лежала в другом месте, то тогда он использовал другие библиотеке которых не было.
В общем надо было указывать в LD_PRELOAD библиотеку libfuse.so.2, а не ту которую указывал раньше.
Всем спасибо за помощь!

v4567 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.