ldd获得可执行程序的所有库并输出到指定目录

本文介绍了一个使用bash脚本的方法,用于收集任意程序依赖的库并将其整理到指定文件夹中。脚本通过解析ldd命令输出,筛选并复制所需的库文件到目标目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash

##########################################################################
#ldd可以查看程序的库依赖情况,请写一个脚本,将任意一个程序依赖的库收集到一个文件夹.
#其中:
#    输入参数为:可执行程序(或库)文件(包含路径)和输出文件夹;
#    输出收集日志,并将依赖的库收集到指定文件夹。
##########################################################################

##########################################################################
#FileName: GetSoFile.sh
#Function: generate so file list.
#Create time: 2015.09.15
#########################################################################

module="$1"
path="./$2"

ldd $module | awk -v path=$path                                \
'                                                            \
BEGIN{                                                        \
    "mkdir -p '$path'" | getline;                            \
    system("echo get lib, the file path is "path"");        \
}                                                            \
!/not found/{                                                \
            if(NF == 4)                                        \
            {                                                \
                libpath=$(NF - 1);                            \
                system("cp "libpath" "path"");                \
                print "cp "libpath" "path"";                \
            }                                                \
        }                                                    \
/not found/{                                                \
            lib=$1;                                            \
            cmd="locate "lib" | head -n 1";                    \
            cmd|getline pos;                                \
            cpcmd="cp "pos" "path"";                        \
            cpcmd|getline;                                    \
            print "cp "pos" "path"";                        \
        }                                                    \
END{                                                        \
    system("echo get lib ok.");                                \
}
'

 

转载于:https://www.cnblogs.com/foreverstars/p/4811545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值