LINUX.ORG.RU

Проверить, есть ли библиотека в системе

 


0

1

Привет, ЛОР!

Допустим у меня программа прилинкованна на библиотеку libfake.so.10, но меня устроит и libfake.so.9.
То есть на некоторых системах я могу просто создать ссылку libfake.so.10 -> libfake.so.9.

Эту ссылку надо создавть скриптом. А как мне проверить, нету ли уже такой ссылки?

Вариант обходить дефолтные папки и все что в /etc/ld.so.conf не подходит.
Грепать ldconfig -p тоже не подходит, так как он её не покажет, если libfake.so.10 — это ссылка.

Пока что есть два варианта.
Не красивый:

ldconfig -Nv | grep -E '[[:space:]]libfake.so.10([[:space:]]|$)'

И ужасный:
ldd myapplication | grep 'libfake.so.10 => not found'

А почему бы просто не взять gcc и собрать тестовый бинарник с линковкой на нужную версию ?

joy4eg ★★★★★
()

autoconf это умеет изкоробки

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

Не умею:)
Меня вот начал беспокоить вопрос, а можно ли в gcc скормить какой-то аргумент, что бы он линковал мой ELF-файлик, к so-шнику без версии?
Типа к libfake.so, вместо libfake.so.10.

sphericalhorse ★★★★★
() автор топика

[[ -e /lib/libfake.so.10 ]] || ...

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

У меня собирается файлик _cffi.so прилинкованный на libffi.so.5.
Собирается вот так:

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DUSE__THREAD -I/usr/lib64/libffi-3.0.5/include -I/usr/include/python2.6 -c c/_cffi_backend.c -o build/temp.linux-x86_64-2.6/c/_cffi_backend.o
gcc -pthread -shared build/temp.linux-x86_64-2.6/c/_cffi_backend.o -L/usr/lib64 -lffi -lpython2.6 -o build/lib.linux-x86_64-2.6/_cffi_backend.so
Куда смотреть?

sphericalhorse ★★★★★
() автор топика
Последнее исправление: sphericalhorse (всего исправлений: 1)
Ответ на: комментарий от sphericalhorse

А, вы свой .so делаете. Тогда это правильно, что от версии зависит.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.