一、脚本编写
适配系统的时候,需要查找一些依赖文件,手工用winhex或UltraEdit来找挺麻烦的。
所以写了个shell脚本,用来批量取得这些依赖关系。
在linux系统下,把如下内容存为getNEED.sh
#/bin/bash #by benjaminwan V0.2 printf "**************************************\n" printf "please put this shell to system folder\n" 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目录
执行完毕后,目录下生成的NEED_xxx.txt就是批量列出的依赖关系文件
如果文件不含NEEDED,则代表此文件无依赖关系,或者不能被objdump识别
如何解读(例):
adb
NEEDED libc.so
NEEDED libstdc++.so
NEEDED libm.so
*************************************
此段含义:
adb这个程序,需要libc.so、libstdc++.so、libm.so这三个文件
========================================================================================
附加知识:
有时候缺lib,并不提示文件名,而是提示一串比如:_ZN3net15
这个时候可以通过这个命令来查找
grep -r "_ZN3net15" *
原文地址:https://www.jb51.cc/javaschema/285628.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。