バイナリの依存モジュール(共有オブジェクト)を取得する
-
23-09-2019 - |
質問
Linuxにバイナリファイルがあります。TCLSH8.4。特定のtcl*.soファイルに依存します。
この情報をバイナリファイル自体から取得する方法はありますか?
バイナリTCLSH8.4が依存するTCL*.SOファイルは、許可が限られている他のディレクトリにあります。他の場所から同じ.soファイルを使用するために、バイナリファイルに何をすべきでしょうか?
同じロケーションのファイルをコピーするだけで、同じロケーションのファイルが機能しますか?
解決
使用する ldd
このため。
Linuxローダーは、指定されたディレクトリで共有オブジェクトのみを探しているため、共有オブジェクトをコピーすることは機能しません /etc/ld.so.conf
. 。使用する必要があります $LD_LIBRARY_PATH
ローダーに追加の共有オブジェクトを見つける場所を伝えるには。
他のヒント
動的.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