Dockerでコンテナを作ってる時に、あるプログラムが依存しているライブラリってどれだっけ?となって書いたもの。
ただldd
を使うだけなのでリンク時に解決したライブラリしか見えません。
つまり実行時にdlopenで読むようなライブラリまではわかりません。例えばglibcのnssのようにファイルに書いてある内容によって読むライブラリを決定するようなものとかです。
RHEL 7 で確認。芋づる式に実行して最後にsort | uniq
で重複を消すだけ。
deps.sh
# !/bin/bash
# usage) bash deps.sh /usr/bin/executable-file
function deps(){
local file=$1
ldd "$file" | awk '{print $3}' | while read line; do
if [ "$line" = "" ]; then
continue
fi
echo "$line"
deps "$line"
done
}
deps "$1" | sort | uniq