标签

PostgreSQL , Linux , ldd , 库依赖


背景

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

例子

1、通过LDD查看依赖的动态库。

# ldd postgres  linux-vdso.so.1 =>  (0x00007ffcfc324000)  libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb6151ba000)  libxml2.so.2 => /lib64/libxml2.so.2 (0x00007fb614e4f000)  libpam.so.0 => /lib64/libpam.so.0 (0x00007fb614c40000)  libssl.so.10 => /lib64/libssl.so.10 (0x00007fb6149ce000)  libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fb61456c000)  libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fb61431f000)  librt.so.1 => /lib64/librt.so.1 (0x00007fb614117000)  libdl.so.2 => /lib64/libdl.so.2 (0x00007fb613f12000)  libm.so.6 => /lib64/libm.so.6 (0x00007fb613c10000)  libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fb6139bc000)  libicui18n.so.50 => /lib64/libicui18n.so.50 (0x00007fb6135bc000)  libicuuc.so.50 => /lib64/libicuuc.so.50 (0x00007fb613243000)  libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fb61321b000)  libc.so.6 => /lib64/libc.so.6 (0x00007fb612e59000)  /lib64/ld-linux-x86-64.so.2 (0x00007fb6153e1000)  libz.so.1 => /lib64/libz.so.1 (0x00007fb612c43000)  liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fb612a1d000)  libaudit.so.1 => /lib64/libaudit.so.1 (0x00007fb6127f4000)  libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fb61250c000)  libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fb612308000)  libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fb6120d4000)  libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fb611ec6000)  libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fb611cc2000)  libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fb611aa7000)  liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007fb611898000)  libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fb61167b000)  libssl3.so => /lib64/libssl3.so (0x00007fb61142e000)  libsmime3.so => /lib64/libsmime3.so (0x00007fb611207000)  libnss3.so => /lib64/libnss3.so (0x00007fb610edd000)  libnssutil3.so => /lib64/libnssutil3.so (0x00007fb610caf000)  libplds4.so => /lib64/libplds4.so (0x00007fb610aab000)  libplc4.so => /lib64/libplc4.so (0x00007fb6108a6000)  libnspr4.so => /lib64/libnspr4.so (0x00007fb610667000)  libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fb61035f000)  libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb610149000)  libicudata.so.50 => /lib64/libicudata.so.50 (0x00007fb60eb74000)  libcap.so.2 => /lib64/libcap.so.2 (0x00007fb60e96f000)  libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb60e748000)  libgcrypt.so.11 => /lib64/libgcrypt.so.11 (0x00007fb60e4c6000)  libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fb60e2c1000)  libdw.so.1 => /lib64/libdw.so.1 (0x00007fb60e079000)  libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007fb60de72000)  libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fb60dc3b000)  libattr.so.1 => /lib64/libattr.so.1 (0x00007fb60da35000)  libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb60d7d3000)  libelf.so.1 => /lib64/libelf.so.1 (0x00007fb60d5bb000)  libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fb60d3aa000)  libfreebl3.so => /lib64/libfreebl3.so (0x00007fb60d1a7000)

2、写一个SHELL脚本,自动拷贝依赖的动态库。

vi test.sh  deplist=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )
cp -L -n $deplist $2
-L 表示拷贝文件(如果是软链,会拷贝到最终的文件)。
-n 表示不覆盖已有文件。

3、创建目标目录。

mkdir /tmp/lib

4、将postgres依赖的动态库拷贝到目标目录

. ./test.sh /usr/pgsql-10/bin/postgres /tmp/lib/
ll /tmp/lib  total 39332
-rwxr-xr-x 1 root root    19888 Oct 25 13:01 libattr.so.1
-rwxr-xr-x 1 root root   122936 Oct 25 13:01 libaudit.so.1
-rwxr-xr-x 1 root root    68192 Oct 25 13:01 libbz2.so.1
-rwxr-xr-x 1 root root    23968 Oct 25 13:01 libcap-ng.so.0
-rwxr-xr-x 1 root root    20024 Oct 25 13:01 libcap.so.2
-rwxr-xr-x 1 root root    15848 Oct 25 13:01 libcom_err.so.2
-rwxr-xr-x 1 root root  2512448 Oct 25 13:01 libcrypto.so.10
-rwxr-xr-x 1 root root    41080 Oct 25 13:01 libcrypt.so.1
-rwxr-xr-x 1 root root  2118128 Oct 25 13:01 libc.so.6
-rwxr-xr-x 1 root root    19776 Oct 25 13:01 libdl.so.2
-rwxr-xr-x 1 root root   301576 Oct 25 13:01 libdw.so.1
-rwxr-xr-x 1 root root    99952 Oct 25 13:01 libelf.so.1
-rwxr-xr-x 1 root root    11384 Oct 25 13:01 libfreebl3.so
-rwxr-xr-x 1 root root    88720 Oct 25 13:01 libgcc_s.so.1
-rwxr-xr-x 1 root root   535064 Oct 25 13:01 libgcrypt.so.11
-rwxr-xr-x 1 root root    19384 Oct 25 13:01 libgpg-error.so.0
-rwxr-xr-x 1 root root   320768 Oct 25 13:01 libgssapi_krb5.so.2
-rwxr-xr-x 1 root root 20789896 Oct 25 13:01 libicudata.so.50
-rwxr-xr-x 1 root root  2096056 Oct 25 13:01 libicui18n.so.50
-rwxr-xr-x 1 root root  1539392 Oct 25 13:01 libicuuc.so.50
-rwxr-xr-x 1 root root   210768 Oct 25 13:01 libk5crypto.so.3
-rwxr-xr-x 1 root root    15688 Oct 25 13:01 libkeyutils.so.1
-rwxr-xr-x 1 root root   963504 Oct 25 13:01 libkrb5.so.3
-rwxr-xr-x 1 root root    58728 Oct 25 13:01 libkrb5support.so.0
-rwxr-xr-x 1 root root    61888 Oct 25 13:01 liblber-2.4.so.2
-rwxr-xr-x 1 root root   348400 Oct 25 13:01 libldap-2.4.so.2
-rwxr-xr-x 1 root root   157424 Oct 25 13:01 liblzma.so.5
-rwxr-xr-x 1 root root  1141928 Oct 25 13:01 libm.so.6
-rwxr-xr-x 1 root root   251784 Oct 25 13:01 libnspr4.so
-rwxr-xr-x 1 root root  1236800 Oct 25 13:01 libnss3.so
-rwxr-xr-x 1 root root   186216 Oct 25 13:01 libnssutil3.so
-rwxr-xr-x 1 root root    61672 Oct 25 13:01 libpam.so.0
-rwxr-xr-x 1 root root   402384 Oct 25 13:01 libpcre.so.1
-rwxr-xr-x 1 root root    20048 Oct 25 13:01 libplc4.so
-rwxr-xr-x 1 root root    15744 Oct 25 13:01 libplds4.so
-rwxr-xr-x 1 root root   143944 Oct 25 13:01 libpthread.so.0
-rwxr-xr-x 1 root root   111080 Oct 25 13:01 libresolv.so.2
-rwxr-xr-x 1 root root    44448 Oct 25 13:01 librt.so.1
-rwxr-xr-x 1 root root   121328 Oct 25 13:01 libsasl2.so.3
-rwxr-xr-x 1 root root   155744 Oct 25 13:01 libselinux.so.1
-rwxr-xr-x 1 root root   164040 Oct 25 13:01 libsmime3.so
-rwxr-xr-x 1 root root   315072 Oct 25 13:01 libssl3.so
-rwxr-xr-x 1 root root   470336 Oct 25 13:01 libssl.so.10
-rwxr-xr-x 1 root root   995840 Oct 25 13:01 libstdc++.so.6
-rwxr-xr-x 1 root root   162552 Oct 25 13:01 libsystemd.so.0
-rwxr-xr-x 1 root root  1509376 Oct 25 13:01 libxml2.so.2
-rwxr-xr-x 1 root root    90664 Oct 25 13:01 libz.so.1  

Linux 批量依赖库拷贝(ldd)相关推荐

  1. 删除Linux的依赖库并进入救援模式恢复

    删除Linux的依赖库并进入救援模式恢复 模拟一下依赖库文件被删,并进入救援模式恢复 系统:CentOS7 一.删除mv的依赖库文件 删除/lib64/libc.so.6 [root@centos7 ...

  2. linux救援模式下卸载根目录,删除Linux的依赖库并进入救援模式恢复

    删除Linux的依赖库并进入救援模式恢复 删除Linux的依赖库并进入救援模式恢复 模拟一下依赖库文件被删,并进入救援模式恢复 系统:CentOS7 一.删除mv的依赖库文件 删除/lib64/lib ...

  3. linux软件依赖库,【Linux】ubuntu系统安装及软件依赖库

    系统:安装Ubuntu 16.04.1 LTS 更新到Ubuntu 16.04.3 LTS 搜狗中文输入法 然后安装搜狗输入法for Linux,直接下载deb包,双击-> ubuntu sof ...

  4. Linux FFmpeg依赖库编译

    凡是用到视频音频的地方,都用到ffmpeg.很多时候我们需要用到另外一些依赖库,来实现一些别的功能,比如使用libfreetype库在视频顶部的指定文件中绘制文本字符串或文本.这里是记录一下FFmpe ...

  5. Linux检查依赖库,linux 查看依赖库

    readelf -d libsurfaceflinger.so 打印出来的数据如下: Dynamic section at offset 0xb4 contains 37 entries: Tag   ...

  6. Linux篇之显示程序所需依赖库ldd命令的介绍与使用

    一.ldd命令简介 众所周知,当我们在服务器上搭建某些服务时,通常该服务会依赖各种各样的共享库,经常头疼的是,某些服务启动不起来,就是因为缺少各种各样的依赖库.那么如何解决缺少依赖库而导致问题无法解决 ...

  7. anaconda 导出和离线安装依赖库(单个或批量)

    全文参考:https://blog.csdn.net/weixin_43843003/article/details/98619962:https://www.cnblogs.com/jasonzha ...

  8. linux 查询程序的依赖库,linux下查看程序依赖的库

    在x86下,为了查看程序所依赖的库,可使用linux 但若是是使用arm-linux-gcc 等交叉编译环境编译出来的程序,则要使用web 库用于将类似函数打包在一个单元中.而后这些单元就可为其余开发 ...

  9. ldd查看可执行程序的依赖库

    ldd通过调用动态链接器来获取可执行程序的依赖库,但是并不推荐在未知的可执行程序上执行业ldd来获取其依赖库,因为部分版本的ldd会直接通过调用该可执行程序来获取其依赖库,这存在安全风险.

最新文章

  1. swift3.0阿里百川反馈
  2. 云服务优缺点_什么是云服务器,云服务器的优缺点
  3. Xamarin.FormsShell基础教程(2)创建Shell解决方案
  4. 数据挖掘-聚类分析(Python实现K-Means算法)
  5. org.apache.jasper.JasperException: Unable to co...
  6. 无法全新安装_好墙板更需好安装:护墙板安装新方法
  7. mysql颠覆实战笔记(五)--商品系统设计(二):定时更新商品总点击量
  8. lua把userdata写入mysql_Lua中的userdata
  9. 21天学通C语言-学习笔记(10)
  10. iSlide2022免费PPT插件(包含众多PPT模板/素材)
  11. 【C语言】素数/质数
  12. 61_ZYNQ7020开发板_SD/QSPI方式启动_ax_peta
  13. C语言有bool类型吗
  14. Android指南针之加速度传感器地磁传感器-android学习之旅(67)
  15. 神策杯 2018高校算法大师赛(个人、top2、top6)方案总结
  16. vw 前端_前端适配之vw兼容方案(Vue版)
  17. 7-41 嵌套循环-素数个数 (15 分)
  18. STM32F401RCT6基于Arduino框架点灯程序
  19. 客快物流大数据项目(七十):Impala入门介绍
  20. 《炬丰科技-半导体工艺》过热蒸汽晶片清洗设备HF感应加热装置的优化设计

热门文章

  1. pyWavelets工具包的安装及使用
  2. 机器学习模型身后的数学和统计背景:统计与信息论Probability and Information Theory
  3. 设计模式(三)外观模式
  4. IIS支持http协议的:put、delete等方法
  5. SHELL编程之执行环境----邹立巍的博客
  6. jQuery样式操作
  7. XML 学习 (3)
  8. 服务总线yali测试_中国信登加快技术测试体系建设支撑系统高质量运行
  9. python 写入excel_使用python将数据写入excel
  10. 中通知设置响铃_iOS 13.1.3 正式版:解决来电不响铃问题