当前位置: 首页 > article >正文

ubuntu批量依赖库拷贝(ldd)

背景

如何将程序依赖的动态库拷贝到指定的目录?

例子

  1. 通过LDD查看依赖的动态库。
$ ldd extract_gpu
        linux-vdso.so.1 (0x00007ffd931e4000)
        libopencv_cudacodec.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudacodec.so.4.1 (0x00007f064e89f000)
        libopencv_cudaoptflow.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudaoptflow.so.4.1 (0x00007f064c710000)
        libopencv_videoio.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_videoio.so.4.1 (0x00007f064c4b8000)
        libopencv_imgcodecs.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_imgcodecs.so.4.1 (0x00007f064baf5000)
        libopencv_imgproc.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_imgproc.so.4.1 (0x00007f0649205000)
        libopencv_cudaarithm.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudaarithm.so.4.1 (0x00007f063d75c000)
        libopencv_core.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_core.so.4.1 (0x00007f063bac0000)
        libzip.so.4 => /usr/lib/x86_64-linux-gnu/libzip.so.4 (0x00007f063b8ac000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f063b523000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f063b30b000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f063af1a000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f063acfb000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f063aaf7000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f063a8ef000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f064eded000)
        libopencv_cudawarping.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudawarping.so.4.1 (0x00007f0636519000)
        libopencv_cudalegacy.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudalegacy.so.4.1 (0x00007f063550e000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0635170000)
        libdc1394.so.22 => /usr/lib/x86_64-linux-gnu/libdc1394.so.22 (0x00007f0634efa000)
        libgstreamer-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0 (0x00007f0634bbf000)
        libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f063496b000)
        libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f0634654000)
        libgstapp-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0 (0x00007f0634445000)
        libgstriff-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstriff-1.0.so.0 (0x00007f0634237000)
        libgstpbutils-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstpbutils-1.0.so.0 (0x00007f0633fff000)
        libavcodec.so.58 => /usr/local/lib/libavcodec.so.58 (0x00007f063295a000)
        libavformat.so.58 => /usr/local/lib/libavformat.so.58 (0x00007f063250a000)
        libavutil.so.56 => /usr/local/lib/libavutil.so.56 (0x00007f0632294000)
        libswscale.so.5 => /usr/local/lib/libswscale.so.5 (0x00007f0632009000)
        libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f0631da1000)
        libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f0631b6f000)
        libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f06318f8000)
        libjasper.so.1 => /usr/lib/x86_64-linux-gnu/libjasper.so.1 (0x00007f06316a3000)
        libz.so.1 => /usr/local/lib/libz.so.1 (0x00007f0631487000)
        libnppc.so.10 => /usr/local/cuda/lib64/libnppc.so.10 (0x00007f063120c000)
        libnppial.so.10 => /usr/local/cuda/lib64/libnppial.so.10 (0x00007f06304bd000)
        libnppidei.so.10 => /usr/local/cuda/lib64/libnppidei.so.10 (0x00007f062fad0000)
        libnppig.so.10 => /usr/local/cuda/lib64/libnppig.so.10 (0x00007f062e00a000)
        libnppist.so.10 => /usr/local/cuda/lib64/libnppist.so.10 (0x00007f062cc5e000)
        libnppitc.so.10 => /usr/local/cuda/lib64/libnppitc.so.10 (0x00007f062c775000)
        libcublas.so.10 => /usr/lib/x86_64-linux-gnu/libcublas.so.10 (0x00007f06284bf000)
        libcufft.so.10 => /usr/local/cuda/lib64/libcufft.so.10 (0x00007f062130a000)
        libtbb.so.2 => /usr/lib/x86_64-linux-gnu/libtbb.so.2 (0x00007f06210ce000)
        libopencv_cudaimgproc.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudaimgproc.so.4.1 (0x00007f061e7ac000)
        libopencv_objdetect.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_objdetect.so.4.1 (0x00007f061e546000)
        libopencv_cudafilters.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_cudafilters.so.4.1 (0x00007f0601d18000)
        libopencv_calib3d.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_calib3d.so.4.1 (0x00007f060197b000)
        libraw1394.so.11 => /usr/lib/x86_64-linux-gnu/libraw1394.so.11 (0x00007f060176c000)
        libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007f0601554000)
        libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f0601350000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f0601148000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f0600ed6000)
        libgstbase-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0 (0x00007f0600c61000)
        libgstaudio-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstaudio-1.0.so.0 (0x00007f06009ec000)
        libgsttag-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgsttag-1.0.so.0 (0x00007f06007b1000)
        libgstvideo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libgstvideo-1.0.so.0 (0x00007f0600518000)
        libswresample.so.3 => /usr/local/lib/libswresample.so.3 (0x00007f06002fb000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f06000d5000)
        libjbig.so.0 => /usr/lib/x86_64-linux-gnu/libjbig.so.0 (0x00007f05ffec7000)
        libcublasLt.so.10 => /usr/lib/x86_64-linux-gnu/libcublasLt.so.10 (0x00007f05fe034000)
        libnppicc.so.10 => /usr/local/cuda/lib64/libnppicc.so.10 (0x00007f05fda56000)
        libnpps.so.10 => /usr/local/cuda/lib64/libnpps.so.10 (0x00007f05fcfd3000)
        libnppif.so.10 => /usr/local/cuda/lib64/libnppif.so.10 (0x00007f05fa099000)
        libnppim.so.10 => /usr/local/cuda/lib64/libnppim.so.10 (0x00007f05f989a000)
        libopencv_features2d.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_features2d.so.4.1 (0x00007f05f95c7000)
        libopencv_flann.so.4.1 => /home/joyner/disk1/mmaction/third_party/opencv-4.1.0/build/lib/libopencv_flann.so.4.1 (0x00007f05f936e000)
        libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f05f9150000)
        liborc-0.4.so.0 => /usr/lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f05f8ed4000)
  1. 写一个SHELL脚本,自动拷贝依赖的动态库。

vi release.sh

#!/bin/bash
deplist=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )  
cp -L -n $deplist $2 
-L 表示拷贝文件(如果是软链,会拷贝到最终的文件)。 
-n 表示不覆盖已有文件。 
  1. 创建目标目录
mkdir release
  1. 将postgres依赖的动态库拷贝到目标目录
bash release.sh extract_gpu ./release/  
ll ./release

total 1.3G
drwxrwxr-x 2 joyner joyner 4.0K 6月   8 15:33 .
drwxrwxr-x 4 joyner joyner 4.0K 6月   8 15:33 ..
-rwxr-xr-x 1 joyner joyner  13M 6月   8 15:33 libavcodec.so.58
-rwxr-xr-x 1 joyner joyner 2.4M 6月   8 15:33 libavformat.so.58
-rwxr-xr-x 1 joyner joyner 411K 6月   8 15:33 libavutil.so.56
-rwxr-xr-x 1 joyner joyner 2.0M 6月   8 15:33 libc.so.6
-rwxr-xr-x 1 joyner joyner  29M 6月   8 15:33 libcublasLt.so.10
-rwxr-xr-x 1 joyner joyner  65M 6月   8 15:33 libcublas.so.10
-rwxr-xr-x 1 joyner joyner 112M 6月   8 15:33 libcufft.so.10
-rw-r--r-- 1 joyner joyner 216K 6月   8 15:33 libdc1394.so.22
-rw-r--r-- 1 joyner joyner  15K 6月   8 15:33 libdl.so.2
-rw-r--r-- 1 joyner joyner  31K 6月   8 15:33 libffi.so.6
-rw-r--r-- 1 joyner joyner  95K 6月   8 15:33 libgcc_s.so.1
-rw-r--r-- 1 joyner joyner 1.1M 6月   8 15:33 libglib-2.0.so.0
-rw-r--r-- 1 joyner joyner  14K 6月   8 15:33 libgmodule-2.0.so.0
-rw-r--r-- 1 joyner joyner 335K 6月   8 15:33 libgobject-2.0.so.0
-rw-r--r-- 1 joyner joyner  60K 6月   8 15:33 libgstapp-1.0.so.0
-rw-r--r-- 1 joyner joyner 466K 6月   8 15:33 libgstaudio-1.0.so.0
-rw-r--r-- 1 joyner joyner 469K 6月   8 15:33 libgstbase-1.0.so.0
-rw-r--r-- 1 joyner joyner 226K 6月   8 15:33 libgstpbutils-1.0.so.0
-rw-r--r-- 1 joyner joyner 1.3M 6月   8 15:33 libgstreamer-1.0.so.0
-rw-r--r-- 1 joyner joyner  55K 6月   8 15:33 libgstriff-1.0.so.0
-rw-r--r-- 1 joyner joyner 237K 6月   8 15:33 libgsttag-1.0.so.0
-rw-r--r-- 1 joyner joyner 610K 6月   8 15:33 libgstvideo-1.0.so.0
-rw-r--r-- 1 joyner joyner 311K 6月   8 15:33 libjasper.so.1
-rw-r--r-- 1 joyner joyner  57K 6月   8 15:33 libjbig.so.0
-rw-r--r-- 1 joyner joyner 415K 6月   8 15:33 libjpeg.so.8
-rw-r--r-- 1 joyner joyner 151K 6月   8 15:33 liblzma.so.5
-rw-r--r-- 1 joyner joyner 1.7M 6月   8 15:33 libm.so.6
-rwxr-xr-x 1 joyner joyner 486K 6月   8 15:33 libnppc.so.10
-rwxr-xr-x 1 joyner joyner  12M 6月   8 15:33 libnppial.so.10
-rwxr-xr-x 1 joyner joyner 3.9M 6月   8 15:33 libnppicc.so.10
-rwxr-xr-x 1 joyner joyner 7.8M 6月   8 15:33 libnppidei.so.10
-rwxr-xr-x 1 joyner joyner  46M 6月   8 15:33 libnppif.so.10
-rwxr-xr-x 1 joyner joyner  25M 6月   8 15:33 libnppig.so.10
-rwxr-xr-x 1 joyner joyner 6.0M 6月   8 15:33 libnppim.so.10
-rwxr-xr-x 1 joyner joyner  18M 6月   8 15:33 libnppist.so.10
-rwxr-xr-x 1 joyner joyner 3.0M 6月   8 15:33 libnppitc.so.10
-rwxr-xr-x 1 joyner joyner 8.4M 6月   8 15:33 libnpps.so.10
-rwxrwxr-x 1 joyner joyner 1.8M 6月   8 15:33 libopencv_calib3d.so.4.1
-rwxrwxr-x 1 joyner joyner  29M 6月   8 15:33 libopencv_core.so.4.1
-rwxrwxr-x 1 joyner joyner 186M 6月   8 15:33 libopencv_cudaarithm.so.4.1
-rwxrwxr-x 1 joyner joyner 810K 6月   8 15:33 libopencv_cudacodec.so.4.1
-rwxrwxr-x 1 joyner joyner 458M 6月   8 15:33 libopencv_cudafilters.so.4.1
-rwxrwxr-x 1 joyner joyner  40M 6月   8 15:33 libopencv_cudaimgproc.so.4.1
-rwxrwxr-x 1 joyner joyner  15M 6月   8 15:33 libopencv_cudalegacy.so.4.1
-rwxrwxr-x 1 joyner joyner  32M 6月   8 15:33 libopencv_cudaoptflow.so.4.1
-rwxrwxr-x 1 joyner joyner  67M 6月   8 15:33 libopencv_cudawarping.so.4.1
-rwxrwxr-x 1 joyner joyner 975K 6月   8 15:33 libopencv_features2d.so.4.1
-rwxrwxr-x 1 joyner joyner 460K 6月   8 15:33 libopencv_flann.so.4.1
-rwxrwxr-x 1 joyner joyner 8.4M 6月   8 15:33 libopencv_imgcodecs.so.4.1
-rwxrwxr-x 1 joyner joyner  41M 6月   8 15:33 libopencv_imgproc.so.4.1
-rwxrwxr-x 1 joyner joyner 491K 6月   8 15:33 libopencv_objdetect.so.4.1
-rwxrwxr-x 1 joyner joyner 415K 6月   8 15:33 libopencv_videoio.so.4.1
-rw-r--r-- 1 joyner joyner 497K 6月   8 15:33 liborc-0.4.so.0
-rw-r--r-- 1 joyner joyner 454K 6月   8 15:33 libpcre.so.3
-rw-r--r-- 1 joyner joyner 198K 6月   8 15:33 libpng16.so.16
-rwxr-xr-x 1 joyner joyner 142K 6月   8 15:33 libpthread.so.0
-rw-r--r-- 1 joyner joyner  59K 6月   8 15:33 libraw1394.so.11
-rw-r--r-- 1 joyner joyner  31K 6月   8 15:33 librt.so.1
-rw-r--r-- 1 joyner joyner 1.6M 6月   8 15:33 libstdc++.so.6
-rwxr-xr-x 1 joyner joyner 115K 6月   8 15:33 libswresample.so.3
-rwxr-xr-x 1 joyner joyner 523K 6月   8 15:33 libswscale.so.5
-rw-r--r-- 1 joyner joyner 230K 6月   8 15:33 libtbb.so.2
-rw-r--r-- 1 joyner joyner 475K 6月   8 15:33 libtiff.so.5
-rw-r--r-- 1 joyner joyner 119K 6月   8 15:33 libudev.so.1
-rw-r--r-- 1 joyner joyner  95K 6月   8 15:33 libusb-1.0.so.0
-rw-r--r-- 1 joyner joyner  79K 6月   8 15:33 libzip.so.4
-rwxr-xr-x 1 joyner joyner 120K 6月   8 15:33 libz.so.1

http://www.kler.cn/a/446612.html

相关文章:

  • C#中方法参数传值和传引用的情况
  • 基于字节大模型的论文翻译(含免费源码)
  • 轻松上手:使用 Vercel 部署 HTML 页面教程
  • 【HarmonyOS之旅】DevEco Studio的安装与环境配置
  • [Python学习日记-73] 面向对象实战1——答题系统
  • (五)FT2232HL高速调试器之--三步实现STM32的VSCODE在线仿真工程搭建
  • S32K324 Stack异常分析及解决方案
  • 数据结构十大排序之(冒泡,快排,并归)
  • C#.NET使用multipart/form-data方式上传文件及其他数据
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战训练一)
  • c4d动画怎么导出mp4视频,c4d动画视频格式设置
  • 网络安全基础知识分享
  • 算法—有效的字母异位词
  • 一文速通 IIC I2C子系统驱动 通信协议原理 硬件 时序 深度剖析
  • 青少年编程与数学 02-004 Go语言Web编程 14课题、数据操作
  • K8s docker-compose的入门
  • Yolov11学习笔记
  • 使用Redis提升PHP应用的性能
  • SpringBoot02
  • Netdevops入门基础学习03
  • Leaflet的zoom层级-天地图层级之间的关系
  • Micropython RPI-PICO 随记-DS3231和RTC
  • POI-TL插件开发-表格分组插件
  • HTML 面试题全解析
  • Intellij配置scala运行环境
  • 故障诊断 | 一个小创新:特征提取+KAN分类