首页 > 系统相关 >Linux下如何找到程序中是否有dlopen的库

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

时间:2023-05-04 19:05:13浏览次数:42  
标签:help 程序 ARGUMENT Linux usage fi check 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




标签:help,程序,ARGUMENT,Linux,usage,fi,check,dlopen
From: https://blog.51cto.com/u_16097040/6244034

相关文章

  • linux模块驱动编写示例
    2023-05-04关键字:该驱动可通过dts配置属性,可在/dev创建节点,支持对/dev下的节点进行标准IO读写以及ioctl读写。dts如下:ir_cut{status="okay";compatible="chorm,ir-cut";gpios=<&gpf0GPIO_ACTIVE_HIGH>,<&gpf1GPIO_ACTIVE_LOW>;}; ......
  • linux下添加简单的开机自启动脚本
    在rc.local脚本中添加开机自启动程序1、编辑文件/etc/rc.localvim/ect/rc.local2、编辑完/etc/rc.local需要添加执行权限,否则调用失败chmod+x/ect/rc.d/rc.local3、/ect/rc.local和/ect/rc.d/rc.local是软链接关系[root@localhost~]#ll/etc/rc.locallrwxrwxrwx.1......
  • python调用c程序
    C代码文件名《task.c》#include<stdio.h>inttask(intn,intp,intm){ inti,j,k; unsignedlongs=0; for(i=0;i<n;i++){ for(j=0;j<p;j++){ for(k=0;k<m;k++) { s=s+i+j+k; } }} returns;}编译在task.c文件目录上打开命令行......
  • 恒创科技:Windows与 Linux 云服务器差异解释
    ​选择云服务器时,重要的是要确定服务器的操作系统。不过,要做出适合您的选择,您需要了解Windows和Linux云服务器之间的主要区别。以下内容旨在提供有关性能、使用情况、安全性、支持和选择这些操作系统的其他方面的相关信息。表现与Windows云服务器相比,Linux可以......
  • Linux系统
    Liunx系统是一个免费,开源,基于Posix和Unix的多用户,多任务,支持多线程和多CPU的操作系统。(免费开源多用户的操作系统)免费:使用这个系统不要钱开源:开放系统源代码,Liunx基本常用命令suroot/123456:超级用户ifconfig:查看IP地址cd /:根目录cd ~:家目录cd../:多级目录ll......
  • Linux搭建JDK环境
    一、上传linux版本的JDK包至服务器本次实验上传的linux目录为/usr/local/develop/JDK。二、解压JDK压缩包tar-zvxfjdk-8u351-linux-x64.tar.gz解压后详情如下三、配置JDK环境变量3.1、打开profile文件,配置jdk的环境变量sudovi/etc/profile3.2、在文件尾......
  • C统计单词程序
    C统计单词程序需求描述读取并报告单词的数量计算字符数和行数识别单词的处理把一个单词定义为不含空白的字符序列既:没有空格、制表符、换行符/***@Author:Lucifer*@Date:4/30/2023,2:12:10PM*@LastEditors:Lucifer*@LastEditTime:4/30/2023,2:12:......
  • C菜单响应程序
    C菜单响应程序需求:提供一个响应程序用户输入正确得到响应用户输入错误重新输入注意:混合字符和数值输入可以识别处理用户输入Enter键示例代码:/***@Author:Lucifer*@Date:5/1/2023,2:43:11PM*@LastEditors:Lucifer*@LastEditTime:5/1/2023,2:43:......
  • ch583/ch582/ch573/ch571 central(主机)程序
    本程序是在CH582m上运行的,一、主从连接主机这里可以根据从机的MAC地址进行连接。staticuint8_tPeerAddrDef[B_ADDR_LEN]={0x02,0x02,0x03,0xE4,0xC2,0x84};一般从机在使用的时候不做其他配置时使用的是芯片本身的MAC地址,可以通过修改从机端对应的MAC地址和主机进行连......
  • 从七个方面聊聊Linux到底强在哪
    从事计算机相关行业的同学不难发现,身边总有一些朋友在学习linux,有的开发同学甚至自己的电脑就是它。经常听他们说linux如何好用等等。那么linux到底好在那里,能让大家如此喜欢。这也是我经常问自己的一个问题。下面我将通过以下七点来为大家阐述linux的巨大优势。 下面我将通过......