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

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

  2. 二进制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

我希望它有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top