linux怎么复制目录列表,Linux下将ldd打印的依赖列表拷贝到指定目录

Linux下的ldd命令可以查看一个可执行文件/共享库/静态库的依赖, 但是想得到这些依赖文件, 必须手动去找,非常麻烦

这里是一个Shell可以将依赖列表中的文件拷贝到指定目录

deplist=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )

cp $deplist $2

代码解释: ldd导出列表, 这个列表打印出来很丑

linux-gate.so.1 =>  (0x00ed2000)

liblog4cpp.so.4 => /usr/local/lib/liblog4cpp.so.4 (0x00657000)

libprotobuf.so.7 => /usr/local/lib/libprotobuf.so.7 (0x00360000)

libboost_filesystem.so.1.48.0 => /usr/local/lib/libboost_filesystem.so.1.48.0 (0x00a9a000)

libboost_program_options.so.1.48.0 => /usr/local/lib/libboost_program_options.so.1.48.0 (0x00110000)

libboost_system.so.1.48.0 => /usr/local/lib/libboost_system.so.1.48.0 (0x00a85000)

libboost_thread.so.1.48.0 => /usr/local/lib/libboost_thread.so.1.48.0 (0x00179000)

libunwind-x86.so.7 => /usr/lib/libunwind-x86.so.7 (0x00821000)

libluabindd.so.0.9.0 => /usr/local/lib/libluabindd.so.0.9.0 (0x00bb3000)

libmysqlpp.so.3 => /usr/local/lib/libmysqlpp.so.3 (0x00de5000)

libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x001a9000)

libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00782000)

libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00aea000)

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00447000)

libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00abd000)

librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0x00193000)

libnsl.so.1 => /lib/i386-linux-gnu/libnsl.so.1 (0x00294000)

libunwind.so.7 => /usr/lib/libunwind.so.7 (0x002ab000)

libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00e8a000)

libmysqlclient_r.so.16 => /usr/lib/libmysqlclient_r.so.16 (0x0083b000)

/lib/ld-linux.so.2 (0x00608000)

libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0x002c0000)

我们发现第一行的so没有对应的库地址, 因此我们使用awk的脚本功能,判断第三个参数,也就是=>之后的路径必须包含/

之后将第一行的输出重定向到变量中, 再使用cp指令从列表拷贝到指定目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值