获取二进制的依赖模块(共享对象)
-
23-09-2019 - |
题
我在Linux上有一个二进制文件。TCLSH8.4。这取决于某些tcl*.so文件。
有没有办法从二进制文件本身获取此信息?
二进制tclsh8.4所取决于的tcl*.so文件在其他目录中具有有限的许可。为了从其他位置使用相同的.SO文件,我该怎么办?
在同一位置工作中仅复制oved .so文件吗?
解决方案
利用 ldd
为了这。
复制共享对象不起作用,因为Linux加载程序仅在指定的目录中查找共享对象 /etc/ld.so.conf
. 。您需要使用 $LD_LIBRARY_PATH
告诉加载程序在哪里可以找到额外的共享对象。
其他提示
要查看Dynamic .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
我希望它有帮助。
不隶属于 StackOverflow