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

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

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

133 голоса | спросил hasen 16 PM00000080000000231 2009, 20:02:02

7 ответов


168

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

  ldconfig -p | grep libjpeg
 

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

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

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

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

ответил faken 7 J0000006Europe/Moscow 2013, 02:19:34
32

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

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

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

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

ответил radius 16 PM00000080000002331 2009, 20:16:23
15

Я использую утилиту whereis .
Пример:

l1feh4ck3r @ xxx: ~ $ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
ответил lifchicker 17 AM00000050000001331 2009, 05:00:13
7

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

  dpkg -s packagename
 

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

  найти имя файла
 

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

ответил Kim 16 PM00000080000003331 2009, 20:28:33
7

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

  gcc -lpng
 

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

  неопределенная ссылка на 'main'
 

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

  не может найти -lpng
 
ответил AndreLDM 31 MarpmTue, 31 Mar 2015 17:50:24 +03002015-03-31T17:50:24+03:0005 2015, 17:50:24
3

В системах на базе Redhat можно использовать pkg-config, чтобы проверить, установлена ​​ли библиотека или нет. Многие двоичные файлы rpm фактически выполняют те же проверки перед продолжением установки, поэтому мы можем разумно полагаться на его достоверность.

  pkg-config --cflags jpeg

pkg-config --libs jpeg

pkg-config --cflags "jpeg> = 1.0.0" # для проверки версии
pkg-config --modversion jpeg | awk -F. '{printf "0x% 02X% 02X% 02X \ n", $ 1, $ 2, $ 3}' #версия
 
ответил Saasira 7 FebruaryEurope/MoscowbTue, 07 Feb 2012 13:35:50 +0400000000pmTue, 07 Feb 2012 13:35:50 +040012 2012, 13:35:50
1

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

Посмотрите на Учебник об автоконфигурации и KDevelop .

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

ответил nik 16 PM00000080000000031 2009, 20:11:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132