Назад | Перейти на главную страницу

Как проверить, установлена ​​ли библиотека?

Как в 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]