Как в Linux проверить, установлена ли библиотека? (конечно из командной строки).
В моем конкретном случае я хочу проверить, установлен ли libjpeg.
Чтобы сделать это независимо от дистрибутива *, вы можете использовать ldconfig с grep, например:
ldconfig -p | grep libjpeg
Если libjpeg не установлен, вывода не будет. Если он установлен, вы получите строку для каждой доступной версии.
Замените libjpeg любой библиотекой, которая вам нужна, и вы получите общий, независимый от дистрибутива * способ проверки доступности библиотеки.
Если по какой-то причине путь к ldconfig не задан, вы можете попробовать вызвать его, используя полный путь, обычно /sbin/ldconfig
.
** 99% случаев *
Вы можете проверить это с помощью диспетчера пакетов вашего дистрибутива (aptitude, yum, ...), но поскольку вы не предоставили свой дистрибутив, я не могу дать вам правильную команду.
Другой способ - бежать gcc -ljpeg
, если вы получили 'ld: library not found for -ljpeg', это означает, что gcc не нашел библиотеку (но это не означает, что она не установлена), если вы получите что-то вроде 'Undefined symbols: "_main", на который имеется ссылка from: ... 'это означает, что библиотека libjpeg была найдена.
locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*
- это другой способ узнать, установлена ли библиотека в системе
Есть много других способов проверить это, если вы дадите нам больше контекста (почему вам нужно проверять, установлена ли libjpeg), мы могли бы предоставить вам лучшее решение для вашего конкретного случая.
Я использую где утилита.
Образец:
l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
Я использую это:
gcc -lpng
Когда библиотека установлена, она дает:
undefined reference to 'main'
Когда библиотека не установлены:
cannot find -lpng
Для распространения на основе deb вы можете сделать
dpkg -s packagename
Или, если вы знаете только имя файла, используйте
locate filename
Имя файла обычно libsomething.so [.version].
В системах на основе 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]