Domanda

Ho un file binario su Linux .. tclsh8.4. Dipende da alcuni file TCL*.so.

  1. C'è un modo per ottenere queste informazioni dal file binario stesso?

  2. I file tcl*.so su cui dipende il binario TCLSH8.4 è in qualche altra directory con un permesso limitato. Cosa devo fare al file binario per utilizzare gli stessi file .So da qualche altra posizione?

Copando solo i file .So.

È stato utile?

Soluzione

Uso ldd per questo.

Copia degli oggetti condivisi non funzionerebbe poiché il caricatore Linux cerca solo oggetti condivisi nelle directory specificate in /etc/ld.so.conf. Dovresti usare $LD_LIBRARY_PATH Per dire al caricatore dove trovare oggetti extra condivisi.

Altri suggerimenti

Per vedere le dipendenze del file dinamico .So è possibile utilizzare il ldd comando. Per ottenere informazioni sul file eseguibile, controlla il readelf comando.

Se è necessario controllare le dipendenze di più file .so, è possibile utilizzare lo script successivo:

#!/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

Spero possa essere d'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top