Linux下批量获取程序依赖动态库

程序开发完成后,一般会分发给别的用户运行,但是不是所有用户都拥有与开发者系统的使用环境,最好的方法就是将程序及其依赖库一起打包给用户。

这种打包好的软件就叫做软件包,Debian系的格式为.deb,红帽系的格式为.rpm,当然你也可以直接使用zip、7z压缩一下就可以了。

本文介绍如何批量快速的获取软件的所有依赖库,并将其复制到统一的位置方便打包。

方法一

将程序依赖的所有库文件拷贝出来

1
ldd appName | awk '{print $3}' | xargs -i cp -L {} /dst/path
  • appName是可执行程序名称
  • /dst/path是拷贝依赖库的目标文件夹

如果需要有选择的拷贝,则可以加入grep过滤一下

1
ldd appName | grep -E "libssl|libstdc" | awk '{print $3}' | xargs -i cp -L {} /dst/path
  • libssl和libstdc是用于匹配需要拷贝的库文件

方法二

使用脚本自动执行

1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
# 用于批量获取软件的链接库

exe=${0%.*}
echo $exe
des=$(cd `dirname $0`;pwd)
echo $des

deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
echo $deplist
cp $deplist $des

将上面的脚本代码保存为appname.sh格式文件,文件名为可执行文件名。

1
sh appname.sh

脚本会自动从系统路径中复制appname依赖的库文件到脚本所在的文件夹下.


Linux下批量获取程序依赖动态库
https://blog.jackeylea.com/linux/get-all-application-dependency-library/
作者
JackeyLea
发布于
2020年9月4日
许可协议