forked from 21cnbao/libdep
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathlibdep-pic.py
More file actions
executable file
·35 lines (29 loc) · 888 Bytes
/
libdep-pic.py
File metadata and controls
executable file
·35 lines (29 loc) · 888 Bytes
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
#!/usr/bin/python3
import sys, os, re
analyzedlist = []
# get the libs prog depends on and write the results into opened file f
def dep(f, prog):
# one lib may be used by several users
if prog in analyzedlist:
return
else:
analyzedlist.append(prog)
pname = prog.split('/')[-1]
needed=os.popen("ldd "+prog)
neededso=re.findall(r'[>](.*?)[(]', needed.read())
for so in neededso:
if(len(so.strip()) > 0):
f.write('"' + pname + '" -> "' + so.split('/')[-1] + '";\n')
dep(f, so)
def main(argv):
f = open('/tmp/libdep.dot','w',encoding='utf-8')
f.write('digraph graphname {\n')
dep(f, argv)
f.write('}\n')
f.close()
os.popen("dot -Tpng -o ./libdep.png /tmp/libdep.dot")
if __name__ == "__main__":
if len(sys.argv) == 2:
main(sys.argv[1])
else:
print ("usage: libdep-pic.py [program]")