Ответы:
Чтобы сделать это независимо от дистрибутива *, вы можете использовать ldconfig с grep, например:
ldconfig -p | grep libjpeg
Если libjpeg не установлен, вывод не будет. Если он установлен, вы получите строку для каждой доступной версии.
Замените libjpeg на любую нужную вам библиотеку, и у вас есть общий, независимый от дистрибутива способ проверки доступности библиотеки.
Если по какой-то причине путь к ldconfig не задан, обычно вы можете попытаться вызвать его, используя полный путь /sbin/ldconfig
.
** 99% случаев *
bash: ldconfig: command not found
на Debian x64 Джесси с xfce! Это рекомендуемый релиз Debian на сайте Debian ...
ldconfig
недоступно ( command not found
отображается), если вы пытаетесь запустить его, не будучи суперпользователем.
/sbin/ldconfig -p
работает для меня без необходимости быть root.
Вы можете проверить это с менеджером пакетов вашего дистрибутива (aptitude, yum, ...), но так как вы не дали свой дистрибутив, я не могу дать вам правильную команду.
Другим способом может быть запуск gcc -ljpeg
, если вы получаете 'ld: library not found for -ljpeg', это означает, что gcc не нашел библиотеку (но это не значит, что она не установлена), если вы получаете что-то вроде 'Undefined символов : "_main", ссылка из: ... 'это означает, что libjpeg был найден.
locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*
какой-то другой способ узнать, установлена ли библиотека в системе
Есть много других способов проверить, что, если вы дадите нам больше контекста (зачем вам нужно проверять, установлен ли libjpeg), мы могли бы дать вам лучшее решение для вашего конкретного случая.
Я использую утилиту whereis .
Образец:
l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
Для распространения на основе deb вы можете сделать
dpkg -s packagename
Или, если вы знаете только имя файла, используйте
locate filename
Имя файла обычно libsomething.so [.version].
dpkg -s
ограниченным в полезности, потому что он хочет фактическое имя пакета, которое может незначительно или значительно отличаться от самой библиотеки. Я используюdpkg -s|grep LIBRARY
В системах на основе Redhat можно использовать pkg-config, чтобы проверить, установлена библиотека или нет. Многие двоичные файлы rpm на самом деле выполняют те же проверки перед продолжением установки, поэтому мы можем разумно полагаться на их достоверность.
pkg-config --cflags jpeg
pkg-config --libs jpeg
pkg-config --cflags "jpeg >= 1.0.0" # for version check
pkg-config --modversion jpeg | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }' #version check
Это делается инструментами настройки на Linux все время.
Посмотрите этот урок об autoconf и KDevelop .
Другие трюки будут использовать такие команды, как ldconfig
и dpkg
.
Вы также можете попробовать использовать dpkg, чтобы проверить, установлен ли он.
dpkg --list | grep [some_key_words_of_your_lib]
Кроме того, на CentOS вы можете попробовать это.
rpm -qa [lib_name]
pkg-config
вместо этого.