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

Вот довольно хороший список известных агентов пользователя бота. Я не знаком ни с каким бесплатным блогом аналитические инструменты, записанные в.NET, но Вы могли легко проанализировать журналы сами, если все, что Вы ищете, является ботами.

http://www.user-agents.org

167
задан 16 August 2009 в 19:02
9 ответов

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

ldconfig -p | grep libjpeg

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

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

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

** 99% случаев *

212
ответ дан 28 November 2019 в 19:17

Можно свериться с диспетчером пакетов распределения (способность, конфетка...), но поскольку Вы не дали свое распределение, я не могу дать Вам правильную команду.

Иначе может быть должен работать gcc -ljpeg, если Вы добираетесь 'ld: библиотека не нашла для-ljpeg', это означает, что gcc не нашел библиотеку (но это не означает, что это не установлено), если Вы получаете что-то как 'Неопределенные символы: "_main", от которого ссылаются:...' это означает, что libjpeg был найден.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* некоторый другой путь состоит в том, чтобы найти если lib в установленном в системе

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

34
ответ дан 28 November 2019 в 19:17

Я использую whereis утилиту.

Образец:

l1feh4ck3r@xxx:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
17
ответ дан 28 November 2019 в 19:17

Это сделано инструментами конфигурирования на Linux все время.

Посмотрите на это Учебное руководство о autoconf и KDevelop.

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

2
ответ дан 28 November 2019 в 19:17

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

dpkg -s packagename

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

locate filename

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

9
ответ дан 28 November 2019 в 19:17
  • 1
    Имя файла может также быть чем-то как " libsomething.a" для статической версии. –  radius 16 August 2009 в 19:40
  • 2
    Я нахожу dpkg -s ограниченный в утилите, потому что она хочет фактическое имя пакета, которое может отличаться тонко или значительно из самой библиотеки. Я использую dpkg -s|grep LIBRARY –  Drew Stephens 16 August 2009 в 19:41
  • 3
    Способный файл @dinomite является Вашим другом :) –  radius 16 August 2009 в 19: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
4
ответ дан 28 November 2019 в 19:17

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

gcc -lpng

Когда библиотека установлена, выдает:

undefined reference to 'main'

Когда библиотека не установлена:

cannot find -lpng
11
ответ дан 28 November 2019 в 19:17

Вы также можете попробовать использовать dpkg для проверки, установлен ли он.

dpkg --list | grep [some_key_words_of_your_lib]

Кроме того, на CentOS, вы можете попробовать это.

rpm -qa [lib_name]

1
ответ дан 28 November 2019 в 19:17

В Ubuntu 20.04 я могу отобразить множество важной информации о пакете, используя aptitude.

% aptitude show libssl-dev
Package: libssl-dev                      
Version: 1.1.1f-1ubuntu2.1
State: installed
Automatically installed: no
Multi-Arch: same
Priority: optional
Section: libdevel
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Uncompressed Size: 8,006 k
Depends: libssl1.1 (= 1.1.1f-1ubuntu2.1)
Suggests: libssl-doc
Conflicts: libssl1.0-dev
Breaks: libssl-dev:i386 (!= 1.1.1f-1ubuntu2.1)
Replaces: libssl-dev:i386 (< 1.1.1f-1ubuntu2.1)
Description: Secure Sockets Layer toolkit - development files
 This package is part of the OpenSSL project's implementation of the SSL and TLS cryptographic protocols for secure communication over
 the Internet. 
 
 It contains development libraries, header files, and manpages for libssl and libcrypto.
Homepage: https://www.openssl.org/

Чтобы узнать, какой пакет будет предоставлять конкретный файл, я нашел очень полезным apt-file — некоторые инструкции можно найти здесь: https://linuxhint.com/find_what_package_contains_specific_file_ubuntu/

% apt-file search 'libjpeg.so'          
darktable: /usr/lib/x86_64-linux-gnu/darktable/plugins/imageio/format/libjpeg.so
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8
libjpeg-turbo8: /usr/lib/x86_64-linux-gnu/libjpeg.so.8.2.2
libjpeg-turbo8-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
libjpeg62: /usr/lib/x86_64-linux-gnu/libjpeg.so.62
libjpeg62: /usr/lib/x86_64-linux-gnu/libjpeg.so.62.0.0
libjpeg62-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
libjpeg9: /usr/lib/x86_64-linux-gnu/libjpeg.so.9
libjpeg9: /usr/lib/x86_64-linux-gnu/libjpeg.so.9.4.0
libjpeg9-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
libxine2-misc-plugins: /usr/lib/x86_64-linux-gnu/xine/plugins/2.7/xineplug_decode_libjpeg.so
nsight-systems: /usr/lib/nsight-systems/Host-x86_64/libjpeg.so.8

2
ответ дан 27 January 2021 в 05:18

Теги

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