如何查看Linux上程序或进程用到的依赖库

发布时间:2021-10-22 09:52:11 作者:柒染
来源:亿速云 阅读:674

本篇文章给大家分享的是有关如何查看Linux上程序或进程用到的依赖库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

有时候我们会遇到这样一个场景: 一台Linux电脑要执行某个还没有安装好的程序,如果有这个程序的安装包我们可以直接安装,或者联网安装,但如果没有这个程序的安装包电脑又不能联网,我们可以从另一台已经装了该程序的电脑(确保一样的平台和系统)把这个程序以及依赖库文件拷过去,因此,你需要知道该程序用到的依赖库。 下面介绍怎么查看Linux上程序或进程用到的依赖库。

查看可执行程序的共享库依赖关系

$ ldd /path/to/program

$ ldd /bin/ls
	linux-vdso.so.1 =>  (0x00007fff73b06000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f0ba2672000)
	libacl.so.1 => /lib/x86_64-linux-gnu/libacl.so.1 (0x00007f0ba246a000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0ba20a3000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f0ba1e65000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0ba1c61000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f0ba28b9000)
	libattr.so.1 => /lib/x86_64-linux-gnu/libattr.so.1 (0x00007f0ba1a5b000)

注意!并不推荐为任何不可信的第三方可执行程序运行ldd,因为某些版本的ldd可能会直接调用可执行程序来明确其库文件依赖关系,这样可能不安全。

取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖,使用如下命令: $objdump -p /path/to/program | grep NEEDED

$ objdump -p /bin/ls | grep NEEDED
  NEEDED               libselinux.so.1
  NEEDED               libacl.so.1
  NEEDED               libc.so.6

查看运行进程的共享库依赖关系

如果你想要找出被一个运行中的进程载入的共享库,你可以使用pmap命令,它报告一个进程的内存映射,也能显示出运行进程的库文件依赖: $ sudo pmap <PID>

$ pmap 5271
5271:   vim /home/linjc/test/test/a.txt
0000000000400000   2420K r-x-- vim.gnome
000000000085d000      4K r---- vim.gnome
000000000085e000     96K rw--- vim.gnome
0000000000876000     60K rw---   [ anon ]
00000000023b7000   4276K rw---   [ anon ]
00007fba38e1f000     44K r-x-- libnss_files-2.19.so
00007fba38e2a000   2044K ----- libnss_files-2.19.so
00007fba39029000      4K r---- libnss_files-2.19.so
00007fba3902a000      4K rw--- libnss_files-2.19.so
00007fba3902b000     44K r-x-- libnss_nis-2.19.so
00007fba39036000   2044K ----- libnss_nis-2.19.so
00007fba39235000      4K r---- libnss_nis-2.19.so
00007fba39236000      4K rw--- libnss_nis-2.19.so
00007fba39237000     92K r-x-- libnsl-2.19.so
00007fba3924e000   2044K ----- libnsl-2.19.so
00007fba3944d000      4K r---- libnsl-2.19.so
00007fba3944e000      4K rw--- libnsl-2.19.so
00007fba3944f000      8K rw---   [ anon ]
00007fba39451000     36K r-x-- libnss_compat-2.19.so
00007fba3945a000   2044K ----- libnss_compat-2.19.so
00007fba39659000      4K r---- libnss_compat-2.19.so
00007fba3965a000      4K rw--- libnss_compat-2.19.so
00007fba3965b000      4K -----   [ anon ]
00007fba3965c000   8192K rw---   [ anon ]
00007fba39e5c000   5748K r---- locale-archive
......

以上就是如何查看Linux上程序或进程用到的依赖库,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. Linux 如何查看进程和控制进程
  2. Linux查看进程的命令

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:Archlinux系统怎么进行快速安装

下一篇:JDK线程的基本协作机制wait和notify怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》