obtendo módulos dependentes (objetos compartilhados) para um binário
-
23-09-2019 - |
Pergunta
Eu tenho um arquivo binário no Linux .. tclsh8.4. Depende de certos arquivos TCL*.SO.
Existe uma maneira de obter essas informações do próprio arquivo binário?
Os arquivos Tcl*.so nos quais o TCLSH8.4 binário depende está em outro diretório com permissão limitada. O que devo fazer com o arquivo binário para usar os mesmos arquivos .so de algum outro local?
Apenas copiar os arquivos .So no mesmo local funcionaria?
Solução
Usar ldd
por esta.
Copiar os objetos compartilhados não funcionaria, pois o carregador Linux procura apenas objetos compartilhados em diretórios especificados em /etc/ld.so.conf
. Você precisaria usar $LD_LIBRARY_PATH
Para dizer ao carregador onde encontrar objetos compartilhados extras.
Outras dicas
Para ver as dependências do arquivo .So dinâmico, você pode usar o ldd
comando. Para obter informações sobre o arquivo executável, verifique o readelf
comando.
Se você precisar verificar as dependências de vários arquivos .so, poderá usar o próximo script:
#!/bin/bash
# dependencies.sh
# Needs to specify the path to check for .so dependencies
if [ $# -ne 1 ]
then
echo 'You need to specify the path'
exit 0
fi
path=$1
for file in "$(find $path -name '*.so')"
do
ldd $file
done
exit 0
Espero que ajude.