No Windows, EXE e DLL têm informações de versão, incluindo pelo menos os seguintes campos:
- versão do arquivo
- Versão do produto
- nome interno
- Nome do Produto
- direito autoral
Na Biblioteca Linux / Executável:
- Quais campos estão presentes?
- Como visualizar essas informações?
- Quais ferramentas / bibliotecas para ler?
executable
libraries
version
ceder
fonte
fonte
/sbin/ldconfig -p
Respostas:
As informações da versão não são armazenadas explicitamente em um arquivo ELF . O que você tem lá é o nome da biblioteca, o
soname
, que inclui a versão principal. A versão completa é geralmente armazenada como parte do nome do arquivo da biblioteca.Se você tem uma biblioteca, digamos
libtest.so
, normalmente você tem:libtest.so.1.0.1
- O próprio arquivo da biblioteca, contendo a versão completalibtest.so.1
- Ligação simbólica paralibtest.so.1.0.1
, com o mesmo nome desoname
libtest.so
- Link simbólicolibtest.so.1
usado para vincular.No arquivo da biblioteca
libtest.so.1.0.1
, haverá uma entrada chamadaSONAME
na seção dinâmica, que dirá que essa biblioteca é chamadalibtest.so.1
. Quando você vincula um programa a essa biblioteca, o programa vinculado armazena osoname
da biblioteca naNEEDED
entrada na seção dinâmica.Se você deseja verificar o que exatamente está em qual arquivo ELF, você pode tentar executar:
onde
elffile
pode ser uma biblioteca de um executável.Se você simplesmente deseja obter a versão da biblioteca, pode jogar com:
AFAIK, não existe essa informação (pelo menos não por padrão) nos arquivos executáveis.
Ou você pode confiar no próprio programa ou no seu sistema de embalagem, como escreveu Rahul Patil.
fonte
Você pode usar
ldconfig -v | grep libraryname
, também o comando tem opçãocommand -V
oubinaryfile --version
exemplo:
Além disso, você pode usar o yum ou o aptitude com base na distribuição que está usando, por exemplo.
No RHEL5 / CENTOS5 / Fedora você pode usar
yum info packagename
ou, se instalado, usarrpm --version packagename
No Ubuntu, você pode usar
aptitude show pkgname
oudpkg --version pkgname
fonte
rpm
, eu acho que você vai quererrpm --query pkgname
para listar a cadeia de versão (rpm --version
imprimirá a versão derpm
si mesmo, o mesmo pode ser verdade paradpkg
)Para sistemas baseados em Redhat, faça o seguinte:
Verifique o arquivo de pacotes necessários, verifique se não há nomes de caminho nos nomes dos arquivos da biblioteca. Nesse caso, remova-os, então "/bin/lib/libx.so.1" mude para "libx.so.1"
Descubra qual pacote contém a biblioteca
Ou coloque isso em um script ou execute a partir da linha cmd:
Em seguida, crie o seguinte script ou execute a partir da linha cmd:
Você está pronto, execute seu programa. Se você receber erros de GUI ao executar. Copie-os e, se forem referências de biblioteca, encontre os pacotes para eles e instale da mesma maneira.
fonte
Execute isso para obter informações da versão -
strings libssl.so.1.0.0 | grep "1\.0"
fonte