ti-enxame.com

como verificar se uma biblioteca está instalada?

No linux, como verifico se uma biblioteca está instalada ou não? (a partir da linha de comando, é claro).

No meu caso específico agora, quero verificar se o libjpeg está instalado.

172
hasen

Para fazer isso de maneira independente da distribuição *, você pode usar o ldconfig com o grep, assim:

ldconfig -p | grep libjpeg

Se o libjpeg não estiver instalado, não haverá saída. Se estiver instalado, você receberá uma linha para cada versão disponível.

Substitua libjpeg por qualquer biblioteca desejada e você tem uma maneira genérica e independente de distribuição * de verificar a disponibilidade da biblioteca.

Se, por algum motivo, o caminho para o ldconfig não estiver definido, tente invocá-lo usando o caminho completo, geralmente /sbin/ldconfig.

** 99% das vezes *

222
faken

Você pode verificar com o gerenciador de pacotes da sua distribuição (aptitude, yum, ...), mas como você não deu sua distribuição, não posso dar o comando certo.

Outra maneira pode ser executar gcc -ljpeg, se você obtiver 'ld: library não encontrado para -ljpeg', significa que o gcc não encontrou a biblioteca (mas não significa que ela não esteja instalada), se você receber algo como 'Símbolos indefinidos: "_main" , referenciado a partir de: ... 'significa que libjpeg foi encontrado.

locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* são outras formas de descobrir se a lib está instalada no sistema

Há muitas outras maneiras de verificar se, se você nos fornecer mais contexto (por que você precisa verificar se o libjpeg está instalado), poderíamos fornecer a melhor solução para o seu caso específico.

34
radius

Eu uso o whereis utilitário.

Amostra:

[email protected]:~$ whereis libjpeg
libjpeg: /usr/lib/libjpeg.so /usr/lib/libjpeg.a /usr/lib/libjpeg.la
17
lifchicker

Eu uso isso:

gcc -lpng

Quando a lib é instalada, ela produz:

undefined reference to 'main'

Quando a lib é não instalada:

cannot find -lpng
12
AndreLDM

Para distribuição baseada em deb, você pode fazer

dpkg -s packagename

Ou, se você souber apenas o nome do arquivo, use

locate filename

O nome do arquivo é geralmente libsomething.so [.version].

9
Kim

Nos sistemas baseados no Redhat, é possível usar o pkg-config para verificar se uma biblioteca está instalada ou não. Muitos binários rpm fazem as mesmas verificações antes de prosseguir com a instalação, para que possamos confiar razoavelmente em sua veracidade.

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
Saasira

Isso é feito por ferramentas de configuração no linux o tempo todo.

Veja este Tutorial sobre autoconf e KDevelop .

Outros truques usariam comandos como ldconfig e dpkg.

2
nik

Você também pode tentar usar o dpkg para verificar se ele está instalado.

dpkg --list | grep [some_key_words_of_your_lib]

Além disso, no CentOS, você pode tentar isso.

rpm -qa [lib_name]

1
Scott Yang