获取二进制的依赖模块(共享对象)

时间:2010-01-27 09:55:23

标签: linux shared-libraries tcl

我在linux上有一个二进制文件.. tclsh8.4。这取决于某些tcl * .so文件。

  1. 有没有办法从二进制文件本身获取此信息?

  2. 二进制tclsh8.4所依赖的tcl * .so文件位于其他具有有限权限的目录中。我应该怎么做二进制文件才能从其他位置使用相同的.so文件?

  3. 只是在同一位置复制oved .so文件吗?

2 个答案:

答案 0 :(得分:4)

请使用ldd

复制共享对象不起作用,因为Linux加载程序仅查找/etc/ld.so.conf中指定的目录中的共享对象。您需要使用$LD_LIBRARY_PATH告诉加载器在哪里可以找到额外的共享对象。

答案 1 :(得分:2)

要查看动态.so文件的依赖项,可以使用ldd命令。要获取有关可执行文件的信息,请查看readelf命令。

如果需要检查多个.so文件的依赖关系,可以使用下一个脚本:

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

我希望它有所帮助。