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

<p>в linux, как я могу проверить, установлена ли библиотека или нет? (из командной строки конечно).</p><p>в моем конкретном случае сейчас я хочу проверить, установлен ли libjpeg.</p>

<p>чтобы сделать это независимо от дистрибутива *, вы можете использовать ldconfig с grep, например:</p><pre><code>ldconfig -p | grep libjpeg </code></pre><p>если libjpeg не установлен, вывод не будет. если он установлен, вы получите строку для каждой доступной версии.</p><p>замените libjpeg на любую нужную вам библиотеку, и у вас есть общий, независимый от дистрибутива способ проверки доступности библиотеки.</p><p>если по какой-то причине путь к ldconfig не задан, вы можете попытаться вызвать его, используя полный путь, обычно <code>/sbin/ldconfig</code>.</p><p>** 99% случаев *</p>

<p>вы можете проверить это с менеджером пакетов вашего дистрибутива (aptitude, yum, ...), но так как вы не дали свой дистрибутив, я не могу дать вам правильную команду.</p><p>другим способом может быть запуск <code>gcc -ljpeg</code>, если вы получаете 'ld: library not found for -ljpeg', это означает, что gcc не нашел библиотеку (но это не значит, что она не установлена), если вы получите что-то вроде 'undefined symbols: "\_main" , ссылается из: ... 'это означает, что libjpeg был найден.</p><p><code>locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*</code> это другой способ узнать, установлена ли библиотека в системе</p><p>есть много других способов проверить, что, если вы дадите нам больше контекста (почему вы должны проверить, установлен ли libjpeg), мы могли бы дать вам лучшее решение для вашего конкретного случая.</p>

<p>я использую утилиту <strong>whereis</strong>.</p><p>образец:</p><pre><code>l1feh4ck3r@xxx:~$ whereis libjpeg libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la 

я использую это:gcc -lpng когда библиотека установлена, она выдает:undefined reference to 'main' когда библиотека <strong>не</strong> установлена: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%02xn",$1,$2,$3 }' #version check </code></pre>

<p>это делается инструментами настройки на linux все время.</p><p>посмотрите на этот <a href="http://www.kdevelop.org/index.html?filename=3.0/doc/tutorial\_autoconf.html"><strong> учебник об autoconf и kdevelop </strong></a> .</p><p>другие приемы будут использовать такие команды, как <code>ldconfig</code> и <code>dpkg</code>.</p>

<p>вы также можете попробовать использовать dpkg, чтобы проверить, установлен ли он.</p><p><code>dpkg --list | grep [some\_key\_words\_of\_your\_lib]</code></p><p>кроме того, на centos вы можете попробовать это.</p><p><code>rpm -qa [lib\_name]</code></p>