Linux下如何找到程序中是否有dlopen的库

嵌入式系统开发下, 有时候要对库进行一些处理. 比如这个库没有被用到就可以被移除, 但是一般情况下没有去判断dlopen的库信息, 所以会造成误删除的情况.

这个bash脚本用来搜索指定目录或指定文件是否有使用dlopen的库及可执行文件.

注意: 该脚本因为是通过对二进制文件的分析实现所有有可能搜到实际上未使用dlopen的文件.

#!/bin/sh

ARGUMENT=""

check_dlopen()
{
    file $1 | grep "LSB executable\|LSB shared object" > /dev/null 2>&1
    if [ $? != 0 ] ; then
        return
    fi
    
    readelf -s $1 | grep "\<UND dlopen\>" > /dev/null 2>&1
    if [ $? != 0 ] ; then
        return
    fi
    
    echo "File $1 has dlopen function"
    echo "dlopen possiable file list:"
    strings -a $1 | grep "\.so" |sed -e 's/^/   /'
}

check_arg()
{
    if [ -f "$1" ] ; then
        check_dlopen $1
    elif [ -d "$1" ] ; then
        for i in $(find "$1" -type f); do
            check_dlopen $i
        done
    fi
}

usage()
{
   cat << END >&2
Usage: $progname [options] dir-name/file-name

Options:
    {-h|--help}
        print help.
END
}

while [ $# != 0 ]; do
    case $1 in
        -h  | --help) usage ; exit 1  ;;
        -*)           usage ; exit 1  ;;
         *)           ARGUMENT="$ARGUMENT $1";;
    esac
    shift
done

if [ -z "$ARGUMENT" ] ; then
   usage
   exit 1
fi

check_arg $ARGUMENT


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值