質問

Linuxにバイナリファイルがあります。TCLSH8.4。特定のtcl*.soファイルに依存します。

  1. この情報をバイナリファイル自体から取得する方法はありますか?

  2. バイナリ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

私はそれが役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top