批量获取bin/lib链接库依赖关系的shell脚本
一、脚本编写 适配系统的时候,需要查找一些依赖文件,手工用winhex或UltraEdit来找挺麻烦的。 所以写了个shell脚本,用来批量取得这些依赖关系。 在linux系统下,把如下内容存为getNEED.sh #/bin/bash #by benjaminwan V0.2 printf "**************************************n" printf "please put this shell to system foldern" printf "**************************************n" function getNeed() { echo '<<<<<<getting NEED for '$1'>>>>>>' case $1 in lib/hw) name=lib_hw ;; vendor/bin) name=vendor_bin ;; vendor/lib) name=vendor_lib ;; vendor/lib/hw) name=vendor_lib_hw ;; *) name=$1 ;; esac if [ ! -d $1 ];then printf "can't find $1 folder!n" else ls $1 -p | grep [^/]$ > info_$name.txt cat info_$name.txt |while read line do echo "getting NEED for" $line echo $line >> Need_$name.txt objdump -x $1/$line | grep "NEEDED" >> Need_$name.txt echo "*************************************" >> Need_$name.txt done rm info_$name.txt fi } getNeed bin; getNeed lib; getNeed lib/hw; getNeed vendor/bin; getNeed vendor/lib; getNeed vendor/lib/hw; printf "**********Completed!**********n" 二、使用说明 以下操作均在linux下完成(在linux的ext3或ext4文件系统下操作),首先确保你的linux有objdump这个程序 把ROM解压,再把getNEED.sh复制到system目录
打开shell并定位到system目录。
#先给权限
chmod a+xgetNEED.sh
再执行
./getNEED.sh
执行完毕后,目录下生成的NEED_xxx.txt就是批量列出的依赖关系文件 如果文件不含NEEDED,则代表此文件无依赖关系,或者不能被objdump识别
如何解读(例): adb ************************************* 此段含义: adb这个程序,需要libc.so、libstdc++.so、libm.so这三个文件 ======================================================================================== 附加知识: 有时候缺lib,并不提示文件名,而是提示一串比如:_ZN3net15 这个时候可以通过这个命令来查找 grep -r "_ZN3net15" *
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby – 错误:无法在Yosemite上构建gem原生扩展
- c – 如何使用类型参数选择成员变量?
- ruby-on-rails – Rails:按天分组和另一列
- 无法找到XML架构名称空间的Spring NamespaceHandler [http:
- ruby-on-rails – Nginx和Mongrel之间的区别?
- C语言正则表达式详解 regcomp() regexec() regfree()详解
- vuejs前后端数据交互之从后端请求数据的实例
- XML详解
- ruby-on-rails – Zoho的Rails ActionMailer配置
- ios – 如何使用swift 3 xcode 8在核心数据中预加载数据库