Para fazer isso de maneira independente da distribuição *, você pode usar o ldconfig com o grep, desta forma:
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, você pode tentar invocá-lo usando o caminho completo, normalmente /sbin/ldconfig.
Não é possível usar isso para verificar a versão dev (cabeçalhos) de uma biblioteca, certo?
andig 14/08/15
2
Você pode especificar 99% de vezes ? bash: ldconfig: command not foundno Debian x64 Jessie com xfce! Esta é a versão debian recomendada no site debian ...
Tomáš Zato
4
@ TomášZato: ldconfignão está disponível ( command not foundaparece) se você tentar executá-lo sem ser superusuário.
Gauthier
2
/sbin/ldconfig -pfunciona para mim sem precisar ser raiz.
Pedro Gimeno 9/11
34
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 executada gcc -ljpeg, se você obtiver 'ld: library não encontrado para -ljpeg', significa que o gcc não encontrou a biblioteca (mas isso não significa que não está instalado), se você tiver algo como 'Símbolos indefinidos : "_main", referenciado a partir de: ... 'significa que libjpeg foi encontrado.
locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg* Há outra maneira 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.
O nome do arquivo também pode ser algo como "libsomething.a" para a versão estática.
raio
Acho dpkg -sutilidade limitada, porque deseja o nome do pacote real, que pode diferir sutil ou significativamente da própria biblioteca. Eu usodpkg -s|grep LIBRARY
Drew Stephens
2
@dinomite apt-file é seu amigo :)
raio
4
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.
Respostas:
Para fazer isso de maneira independente da distribuição *, você pode usar o ldconfig com o grep, desta forma:
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, você pode tentar invocá-lo usando o caminho completo, normalmente
/sbin/ldconfig
.** 99% das vezes *
fonte
bash: ldconfig: command not found
no Debian x64 Jessie com xfce! Esta é a versão debian recomendada no site debian ...ldconfig
não está disponível (command not found
aparece) se você tentar executá-lo sem ser superusuário./sbin/ldconfig -p
funciona para mim sem precisar ser raiz.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 executada
gcc -ljpeg
, se você obtiver 'ld: library não encontrado para -ljpeg', significa que o gcc não encontrou a biblioteca (mas isso não significa que não está instalado), se você tiver algo como 'Símbolos indefinidos : "_main", referenciado a partir de: ... 'significa que libjpeg foi encontrado.locate libjpeg; ls /usr/lib/libjpeg*; ls /lib/libjpeg*
Há outra maneira de descobrir se a lib está instalada no sistemaHá 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.
fonte
Eu uso o utilitário whereis .
Amostra:
fonte
Eu uso isso:
Quando a lib é instalada, ela produz:
Quando a lib não está instalada:
fonte
Para distribuição baseada em deb, você pode fazer
Ou, se você souber apenas o nome do arquivo, use
O nome do arquivo é geralmente libsomething.so [.version].
fonte
dpkg -s
utilidade limitada, porque deseja o nome do pacote real, que pode diferir sutil ou significativamente da própria biblioteca. Eu usodpkg -s|grep LIBRARY
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.
fonte
Isso é feito por ferramentas de configuração no linux o tempo todo.
Veja este tutorial sobre o autoconf e o KDevelop .
Outros truques usariam comandos como
ldconfig
edpkg
.fonte
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]
fonte
pkg-config
lugar.