加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

批量获取bin/lib链接库依赖关系的shell脚本

发布时间:2020-12-13 23:03:08 所属栏目:百科 来源:网络整理
导读:一、脚本编写 适配系统的时候,需要查找一些依赖文件,手工用winhex或UltraEdit来找挺麻烦的。 所以写了个shell脚本,用来批量取得这些依赖关系。 在linux系统下,把如下内容存为getNEED.sh #/bin/bash#by benjaminwan V0.2printf "************************

一、脚本编写

适配系统的时候,需要查找一些依赖文件,手工用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
NEEDED libc.so
NEEDED libstdc++.so
NEEDED libm.so

*************************************

此段含义:

adb这个程序,需要libc.so、libstdc++.so、libm.so这三个文件

========================================================================================

附加知识:

有时候缺lib,并不提示文件名,而是提示一串比如:_ZN3net15

这个时候可以通过这个命令来查找

grep -r "_ZN3net15" *

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读