Question

I have a binary file on linux .. tclsh8.4. It depends on certain tcl*.so files.

  1. Is there a way to get this information from the binary file itself?

  2. The tcl*.so files on which the binary tclsh8.4 depends is in some other directory having limited permission. What should I do to the binary file in order to use the same .so files from some other location?

Would just copying oved .so files in the same location work?

Was it helpful?

Solution

Use ldd for this.

Copying the shared objects over would not work since the Linux loader only look for shared objects in directories specified in /etc/ld.so.conf. You would need to use $LD_LIBRARY_PATH to tell the loader where to find extra shared objects.

OTHER TIPS

To see the dependencies of dynamic .so file you can use the ldd command. To get info about the executable file, check the readelf command.

If you need to check the dependencies of multiple .so files, you can use the next 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

I hope it helps.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow