首页 > 系统相关 >Linux:查看动态库/程序依赖的库

Linux:查看动态库/程序依赖的库

时间:2022-09-18 16:11:53浏览次数:139  
标签:文件 依赖 查看 -- Linux 进程 lsof

  • objdump

# 查看依赖的库
objdump -x xxx.so | grep NEEDED

# 查看可执行程序依赖的库
objdump -x ./testTime | grep NEEDED

  • readelf (https://blog.csdn.net/yfldyxl/article/details/81566279)

# 查看依赖的库
readelf -a xxx.so | grep "Shared"

# 查看可执行程序依赖的库
readelf -a ./testTime | grep "Shared"

# 查看依赖的库 (dynamic 显示动态段的信息)
readelf -d xxx.so
readelf -d ./testTime

# 查看静态库有哪些.o文件
readelf -d xxx.a

 

  • ldd命令

    • Usage: ldd [OPTION]... FILE...
      --help print this help and exit (获取指令帮助信息)
      --version print version information and exit (打印ldd的版本号)
      -d, --data-relocs process data relocations (执行重定位和报告任何丢失的对象)
      -r, --function-relocs process data and function relocations (执行数据对象和函数的重定位,并且报告任何丢失的对象和函数)
      -u, --unused print unused direct dependencies (打印未使用的直接依赖)
      -v, --verbose print all information (详细信息模式,打印所有信息,例如包括符号的版本信息)

# 查看依赖的库
ldd xxx.so

# 查看可执行程序依赖的库
ldd ./testTime

 

  • 在服务端查看哪些进程在使用某一个so(https://blog.csdn.net/xiao_yi_xiao/article/details/124143337)

    • lsof(list open files)命令可以列出当前系统已经打开的所有文件。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表,这对系统监测以及排错是很有帮助的。

lsof ***.so

 lsof [options] filename

  lsof常用形式为:

  lsof test.txt 显示开启文件test.txt的进程
  lsof -c abc 显示abc进程现在打开的文件
  lsof -cp 1234 列出进程号为1234的进程所打开的文件
  lsof -g gid 显示归属gid的进程情况
  lsof +d /usr/local/ 显示/usr/local/目录下被进程开启的文件
  lsof +D /usr/local/ 同上,但是会搜索目录下的目录(即递归搜索),时间较长
  lsof -d 4 显示fd为4的进程
  lsof -i 用以显示符合条件的进程情况
  lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
    46 --> IPv4 or IPv6
    protocol --> TCP or UDP
    hostname --> Internet host name
    hostaddr --> IPv4地址
    service --> /etc/service中的 service name (可以不止一个)
    port --> 端口号 (可以不止一个)

 

  lsof `which httpd`        //查看哪个进程在使用apache的可执行文件
  lsof /etc/passwd          //查看哪个进程在占用/etc/passwd
  lsof /dev/hda6            //查看哪个进程在占用hda6
  lsof /dev/cdrom           //查看哪个进程在占用光驱
  lsof -c sendmail          //查看sendmail进程现在打开的文件
  lsof -c courier -u ^zahn  //显示出哪些文件被以courier打头的进程打开,但是并不属于用户zahn
  lsof -p 30297             //列出进程id为30297的进程所打开的文件
  lsof -D /tmp              //显示所有在/tmp目录下打开文件的进程
   
  lsof -u1000               //查看uid是1000的用户的进程的文件使用情况
  lsof -utony               //查看用户tony的进程的文件使用情况
  lsof -u^tony              //查看不是用户tony的进程的文件使用情况(^是取反的意思)
  lsof -i                   //显示所有已经打开的端口
  lsof -i:80                //查看80端口被哪个进程占用
  lsof -i -U                //显示所有打开的端口和UNIX domain文件
  lsof -i UDP@[url]www.akadia.com:123 //显示哪些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接
  lsof -i tcp@ohaha.ks.edu.tw:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)
  lsof -i tcp@ohaha.ks.edu.tw:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

 

标签:文件,依赖,查看,--,Linux,进程,lsof
From: https://www.cnblogs.com/ainingxiaoguai/p/16704865.html

相关文章

  • 《Unix/Linux系统编程》第十章读书笔记
    自学教材第10章学习笔记一、任务内容自学教材第10章,提交学习笔记(10分)大家学习过Python,C,Java等语言,总结一下一门程序设计语言有哪些必备的要素和技能?这些要素和技能在......
  • 《Unix/Linux系统编程》第十章学习笔记 20201209戴骏
    第十章sh编程一、知识点归纳(一)sh脚本sh脚本(Bourne1982;Forouzan和Gilberg2003)是一个包含sh语句的文本文件,命令解释程序sh要执行该语句。例如,我们可以创建一个文......
  • Linux登录连接Harbor报错http: server gave HTTP response to HTTPS client
    问题:Errorresponsefromdaemon:Get"https://x.x.x.x:80/v2/":http:servergaveHTTPresponsetoHTTPSclient绝对的大坑啊,搞得心态的蹦了,这是因为docker1.3......
  • linux系统中如何查看本机IP
     001、利用net-tools工具下的ifoconfig命令root@ubuntu01:/home/software#ifconfig|head-n3ens32:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500......
  • Linux下boost库的编译及安装
     001、下载地址https://www.boost.org/users/download/  002、tar-xzvfboost_1_80_0.tar.gz 003、编译安装cdboost_1_80_0/./bootstrap.sh--with-l......
  • 轻量级C++编程环境|快速搭建|Linux篇
    环境组成成分VisualStudioCode(编辑器)g++gdb(编译器与调试器)CMake(项目管理编译工具)安装VSCode拓展c++/c++extensioncmaketool以上请认准微软官方出品创建工程目......
  • linux中yum与rpm区别
    一、源代码形式1.绝大多数开源软件都是直接以原码形式发布的2.源代码一般会被打成.tar.gz的归档压缩文件3.源代码需要编译成为二进制形式之后才能够运行使用4.源代码基......
  • Chiplet芯片-IC制造-cis-linux技术分析
    Chiplet芯片-IC制造-cis-linux技术分析参考文献链接https://mp.weixin.qq.com/s/MCTe6wleyecikzCeiziulQhttps://mp.weixin.qq.com/s/Lg_DVnKXHUyF2M0xi3mJjAhttps://m......
  • Vue3安装依赖报错: The engine "node" is incompatible with this module. Expected v
    ue3项目,安装依赖会报各种各样的错误如:errorruoyi-vue-pro-vue3@1.6.3.1611:Theengine"node"isincompatiblewiththismodule.Expectedversion">=14.18.0".Got......
  • Linux 系统安全加固
    本文为博主原创,转载请注明出处:目录 1.禁止root密码登录2.linux用户密钥复杂度及有效期设置3.检查sudo权限4.关闭ftp5.设置文件的属主并......