blob: 575490d8daf39a29a49d6050c5e96117d76ef6e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/bin/bash
libs="$(mktemp)"
dbg() {
[ -z "$DEBUG" ] || echo "$*" >&2
}
# prints all libraries directly depending on a binary / library
find_libs() {
local file="$1"
# regular libs
ldd "$file" | awk -F'> | \\(' '{if($2 ~ "^/")print $2}' | sort -u
}
# returns 1 if a library was known before, 0 otherwise
add_lib() {
local lib="$1"
if ! grep -q -x -F "$lib" "$libs"; then
dbg "Adding $lib"
echo "$lib" >> "$libs"
return 0
fi
return 1
}
recurse_find_libs() {
local file="$1"
dbg "Checking $file"
while read lib; do
if add_lib "$lib"; then
recurse_find_libs "$lib"
fi
done < <(find_libs "$file")
dbg "Done with $file"
}
for bin; do
# ld-linux.so
while read lib; do
add_lib "$lib" || true
done < <(ldd "$bin" | awk '/^[ \t]*\//{print $1}')
recurse_find_libs "$bin"
done
wc -l "$libs"
|