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


В linux, как проверить, установлена ​​ли библиотека или нет? (из командной строки, конечно).

В моем конкретном случае сейчас я хочу проверить, установлен ли libjpeg.


134
2017-08-16 16:02


Источник


Какое распределение вы используете? - radius


Ответы:


Чтобы сделать это в независимой от дистрибутива * моде, вы можете использовать ldconfig с grep, например:

ldconfig -p | grep libjpeg

Если libjpeg не установлен, выход не будет. Если он установлен, вы получите строку для каждой доступной версии.

Замените libjpeg любой библиотекой, которую вы хотите, и у вас есть общий, независимый от дистрибутива * способ проверки доступности библиотеки.

Если по какой-либо причине путь к ldconfig не задан, вы можете попытаться вызвать его, используя его полный путь, обычно /sbin/ldconfig,

** 99% времени *


168
2018-06-06 22:19



Это должно быть принято как ответ. Большой!
Невозможно использовать это для проверки версии dev (заголовков) библиотеки, не так ли? - andig
Можете ли вы указать 99%? bash: ldconfig: command not found на Debian x64 Jessie с xfce! Это рекомендуемый выпуск debian на веб-сайте debian ... - Tomáš Zato
@ TomášZato: ldconfig недоступно (command not found появляется), если вы попытаетесь запустить его, не будучи суперпользователем. - Gauthier
/sbin/ldconfig -p работает для меня, не нуждаясь в корне. - Pedro Gimeno


Вы можете проверить с менеджером пакетов вашего дистрибутива (aptitude, yum, ...), но поскольку вы не предоставили свой дистрибутив, я не могу дать вам правильную команду.

Другим способом может быть запуск gcc -ljpeg, если вы получите 'ld: библиотека, не найденная для -ljpeg', это означает, что gcc не нашел библиотеку (но это не значит, что она не установлена), если вы получаете что-то вроде «Undefined symbols:« _main », ссылка from: ... 'это означает, что libjpeg найден.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* это еще один способ найти, установлена ​​ли библиотека в системе

Существует много других способов проверить, что, если вы дадите нам больше контекста (почему вам нужно проверить, установлен ли libjpeg), мы могли бы предоставить вам лучшее решение для вашего конкретного случая.


32
2017-08-16 16:16



Как найти его с помощью aptitude? - BBK


Я использую где утилита.
Образец:

l1feh4ck3r @ xxx: ~ $ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la

15
2017-08-17 01:00





Для распределения на основе deb вы можете сделать

dpkg -s packagename

Или, если вы знаете только имя файла, используйте

locate filename

Имя файла обычно является libsomething.so [.version].


7
2017-08-16 16:28



Имя файла также может быть чем-то вроде «libsomething.a» для статической версии. - radius
я нахожу dpkg -sограниченный в утилите, потому что ему требуется фактическое имя пакета, которое может отличаться тонко или значительно от самой библиотеки. я использую dpkg -s|grep LIBRARY - Drew Stephens
@dinomite apt-file - ваш друг :) - radius


Я использую это:

gcc -lpng

Когда lib установлен, он дает:

undefined reference to 'main'

Когда lib не установлен:

cannot find -lpng

7
2018-03-31 14:50





В системах на основе 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

3
2018-02-07 09:35





Это делается с помощью инструментов настройки на linux все время.

Посмотри на это Учебник по autoconf и KDevelop,

Другие трюки будут использовать команды типа ldconfig а также dpkg,


1
2017-08-16 16:11