您的位置:首页 > 其它

ldd获得可执行程序的所有库并输出到指定目录

2015-09-15 21:24 302 查看
#!/bin/bash

##########################################################################
#ldd可以查看程序的库依赖情况,请写一个脚本,将任意一个程序依赖的库收集到一个文件夹.
#其中:
#    输入参数为:可执行程序(或库)文件(包含路径)和输出文件夹;
#    输出收集日志,并将依赖的库收集到指定文件夹。
##########################################################################

##########################################################################
#FileName: GetSoFile.sh
#Function: generate so file list.
#Create time: 2015.09.15
#########################################################################

module="$1"
path="./$2"

ldd $module | awk -v path=$path                                \
'                                                            \
BEGIN{                                                        \
"mkdir -p '$path'" | getline;                            \
system("echo get lib, the file path is "path"");        \
}                                                            \
!/not found/{                                                \
if(NF == 4)                                        \
{                                                \
libpath=$(NF - 1);                            \
system("cp "libpath" "path"");                \
print "cp "libpath" "path"";                \
}                                                \
}                                                    \
/not found/{                                                \
lib=$1;                                            \
cmd="locate "lib" | head -n 1";                    \
cmd|getline pos;                                \
cpcmd="cp "pos" "path"";                        \
cpcmd|getline;                                    \
print "cp "pos" "path"";                        \
}                                                    \
END{                                                        \
system("echo get lib ok.");                                \
}
'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: