我在linux上有一个二进制文件.. tclsh8.4。这取决于某些tcl * .so文件。
有没有办法从二进制文件本身获取此信息?
二进制tclsh8.4所依赖的tcl * .so文件位于其他具有有限权限的目录中。我应该怎么做二进制文件才能从其他位置使用相同的.so文件?
只是在同一位置复制oved .so文件吗?
答案 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
我希望它有所帮助。