Linux之查看so/bin依赖(三十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:如何查看so、bin启动依赖的库文件,帮助开发者快速定位问题。

2.实践

<1>.readelf命令

在Linux平台上,readelf是一个非常有用的命令行工具,用于分析可执行文件、共享库和目标文件的ELF格式(Executable and Linkable Format,可执行和可链接格式)的信息。ELF是Linux系统和其他类Unix系统上可执行文件和对象文件的标准格式。

以下是一些常用的readelf命令选项和作用:

  1. readelf -h <filename>:显示目标文件的文件头信息,包括文件类型、目标体系结构、入口点地址等。

  2. readelf -l <filename>:显示目标文件的程序头信息,包括段的起始地址、大小和属性等。

  3. readelf -S <filename>:显示目标文件的节头信息,包括节的名称、起始地址、大小、属性等。

  4. readelf -s <filename>:显示目标文件的符号表,包括函数、变量和其他符号信息。

  5. readelf -r <filename>:显示目标文件的重定位表,展示代码和数据的重定位信息。

  6. readelf -d <filename>:显示目标文件的动态节信息,包括依赖的共享库、动态链接信息等。

readelf命令对于调试、分析和了解可执行文件和目标文件的结构非常有用。它可以帮助开发者查看文件的头部、节、符号表等信息,了解程序的组织结构、依赖关系和动态链接信息,有助于进行代码审计、调试和性能优化。

# readelf -a libstagefrighthw.so | grep -i needed
0x0000000000000001 (NEEDED)             共享库:[libutils.so]0x0000000000000001 (NEEDED)             共享库:[libcutils.so]0x0000000000000001 (NEEDED)             共享库:[liblog.so]0x0000000000000001 (NEEDED)             共享库:[libc++.so]0x0000000000000001 (NEEDED)             共享库:[libc.so]0x0000000000000001 (NEEDED)             共享库:[libm.so]0x0000000000000001 (NEEDED)             共享库:[libdl.so]

otool命令用于调试和分析可执行文件和共享库。

<2>.objdump命令

在Linux平台上,objdump是一个非常有用的命令行工具,用于反汇编目标文件。它可以对可执行文件、共享库和目标文件进行静态反汇编,以便查看其二进制代码的详细信息。objdump提供了各种选项,可以用于分析目标文件、查看符号表、显示程序入口点、反汇编代码以及更多。

以下是一些常用的objdump命令选项和作用:

  1. objdump -d <filename>:对目标文件进行反汇编,显示其二进制代码和汇编指令。

  2. objdump -t <filename>:显示目标文件的符号表,包括函数、变量和节等信息。

  3. objdump -r <filename>:显示目标文件的重定位表,展示代码和数据的重定位信息。

  4. objdump -x <filename>:显示目标文件的所有头部信息,包括段、节和其他文件头信息。

  5. objdump -S <filename>:将源代码和反汇编代码以交叉的方式显示,方便进行源码和汇编代码的对比。

objdump用于软件调试、逆向工程和软件安全分析。

# objdump -p libstagefrighthw.so | grep -i needNEEDED               libutils.soNEEDED               libcutils.soNEEDED               liblog.soNEEDED               libc++.soNEEDED               libc.soNEEDED               libm.soNEEDED               libdl.soVERNEED              0x0000000000000530VERNEEDNUM           0x0000000000000003

<3>.Mac OS平台工具:otool

在Mac OS平台上,otool命令用于分析可执行文件、共享库和内核扩展。它可以提供关于这些二进制文件的信息,包括文件的结构、依赖关系和符号表等内容。以下是otool命令常用的选项和作用:

  1. otool -h:显示可执行文件或共享库的文件头信息,包括文件类型、可执行文件的入口点等。

  2. otool -l:显示二进制文件的加载命令信息,包括依赖的动态库、段和节的信息等。

  3. otool -L:显示二进制文件依赖的动态库和其对应的路径。

  4. otool -tV:显示二进制文件的文本节(Text Section)的内容,其中包含了可执行代码。

  5. otool -d:显示共享库的动态链接信息,包括其他共享库的引用。

  6. otool -arch:指定CPU架构,可以用于查看特定架构的二进制文件信息。

#    otool -L xxx.dylib

3.如果以上三种命令没有满足你的需求:请继续往下看

###<4>.strings命令
Linux中的strings命令用于在一个文件中查找并打印可打印字符序列。它的主要作用是从二进制文件中提取文本信息,例如从可执行文件或库文件中提取字符串常量。

# strings libstagefrighthw.so |grep .so
liblog.so
libc.so
libdl.so
libutils.so
libcutils.so
libc++.so
libm.so
libstagefrighthw.so
libOmxCore.so

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/130741.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】3、Redis主从复制、哨兵、集群

Redis主从复制 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认情况下&#xff0c;每台Redis服务器…

linux————ansible

一、认识自动化运维 自动化运维: 将日常IT运维中大量的重复性工作&#xff0c;小到简单的日常检查、配置变更和软件安装&#xff0c;大到整个变更流程的组织调度&#xff0c;由过去的手工执行转为自动化操作&#xff0c;从而减少乃至消除运维中的延迟&#xff0c;实现“零延时”…

时序预测 | MATLAB实现ELM极限学习机时间序列预测未来

时序预测 | MATLAB实现ELM极限学习机时间序列预测未来 目录 时序预测 | MATLAB实现ELM极限学习机时间序列预测未来预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现ELM极限学习机时间序列预测未来&#xff1b; 2.运行环境Matlab2018及以上&#xff0c;data为数…

【Redis专题】RedisCluster集群运维与核心原理剖析

目录 课程内容一、Redis集群架构模型二、Redis集群架构搭建&#xff08;单机搭建&#xff09;2.1 在服务器下新建各个节点的配置存放目录2.2 修改配置&#xff08;以redis-8001.conf为例&#xff09; 三、Java代码实战四、Redis集群原理分析4.1 槽位定位算法4.2 跳转重定位4.3 …

Ansible数组同步至Shell脚本数组中

1、ansible中定义数组&#xff0c;我以 ccaPojectList 数组为例子,如下图数组内容 2、需要写一个j2模板的Shell脚本&#xff0c;在j2模板的Shell脚本中引用ansible的 ccaPojectList 数组&#xff0c;大致如下图&#xff1a; {% for item in ccaPojectList %} "{{ item }…

探索程序员需要掌握的算法?

文章目录 一&#xff1a;引言二&#xff1a;常见算法介绍三&#xff1a;重点算法总结 &#x1f389;欢迎来到数据结构学习专栏~探索程序员需要掌握的算法&#xff1f; ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章…

【漏洞库】Fastjson_1.2.47_rce

文章目录 漏洞描述漏洞编号漏洞评级影响版本漏洞复现- 利用工具- 漏洞环境- 漏洞扫描- 漏洞验证- 深度利用- GetShell- EXP 编写 漏洞挖掘- 寻找入口点- 指纹信息 修复建议- 漏洞修复 漏洞原理 漏洞描述 Fastjson是阿里巴巴公司开源的一款json解析器&#xff0c;其性能优越&am…

TCP服务器使用多路复用

启用复用的作用&#xff1f; 解决linux系统中的io阻塞问题&#xff0c;让多个阻塞io接口可以一起执行。无需开启线程&#xff0c;节省系统资源。 linux系统中的阻塞io有哪些&#xff1f; scanf、read管道、eadTcp套接字、acppet接收连接请求 有以下两种方式实现多路复用&am…

单位固定资产应该怎么管理

对于单位固定资产的管理&#xff0c;更是需要我们以创新的方式&#xff0c;以科技的手段&#xff0c;以严谨的态度来对待。那么&#xff0c;单位固定资产应该如何进行有效的管理呢&#xff1f; 建立一个完善的资产管理系统  我们需要建立一个完善的资产管理系统。这个系统应…

JS如何判断一个变量是否为数组类型?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 Array.isArray() 方法⭐ 使用 instanceof 操作符⭐ 使用 Object.prototype.toString.call() 方法⭐ 使用 Array.from() 方法⭐ 使用 Array.prototype.isArray 属性&#xff08;不推荐&#xff09;⭐ 写在最后 ⭐ 专栏简介 前端入门之…

使用rpm重新安装包

#查询 rpm -qa | grep cloudstack #卸载 rpm -e cloudstack-agent-4.18.0.0-1.x86_64 #安装 rpm -ivh cloudstack-agent-4.18.0.0-1.x86_64.rpm

Mysql同步数据到Doris的踩坑过程

问题背景 由于项目需要&#xff0c;需要把多个Mysql数据库的数据同步到Doris数据库&#xff0c;然后利用Doris强调的计算和查询能力&#xff0c;来满足业务需求。有关Doris可以查看它的官方文档来了解它。 seatunnel的使用到放弃 缘起 从《第十届GIAC全球互联网架构大会》了…

《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》全文翻译

《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 论文信息摘要1. 介绍2. 思维链提示3. 算术推理3.1 实验设置3.2 结果3.3 消融研究3.4 思想链的稳健性 4. 常识推理5. 符号…

win11本地连接没了怎么办

很多用户在使用win11系统时发现自己的网络连接没有了&#xff0c;遇到这种情况的话&#xff0c;我们应该怎么处理呢&#xff1f;我们可以尝试打开网络图标&#xff0c;下面就是小编整理出的教程&#xff0c;大家一起看看吧。 win11本地连接没了怎么办 方法一&#xff1a; 1、…

Python图像融合处理和 ROI 区域绘制基础

文章目录 一、图像融合二、图像 ROI 区域定位三、图像属性3.1 shape3.2 size3.3 dtype四、图像通道分离及合并4.1、split()函数4.2 merge()函数五、图像类型转换一、图像融合 图像融合通常是指多张图像的信息进行融合,从而获得信息更丰富的结果,能够帮助人们观察或计算机处理…

【echarts】如何将iconfont转换成echart所需的path路径 echarts折线图、柱状图如何设置自定义svg图标

步骤 下载iconfont图标到本地&#xff0c;用浏览器打开&#xff0c;右键查看源代码&#xff0c;或者用开发IDE软件打开&#xff0c;找到path d...&#xff0c;这个就是我们要传递给echart的icon的值。 代码示例&#xff1a; legend: {data: data?.map((item) > item.comp…

Java计算机毕业设计基于SpringBoot音乐网项目(附源码讲解)

目录 用户端 第一步&#xff1a;用户注册 第二步&#xff1a;用户登录 第三步&#xff1a;平台首页&#xff08;可查看平台歌单、歌手详细信息操作等等&#xff09; 第四步&#xff1a;查看歌单 第五步&#xff1a;歌单详情操作&#xff08;歌单评价、歌单歌曲下载、歌单…

06-mq

1、消息队列有什么优点和缺点? 优点&#xff1a; 解耦、异步、削峰填谷。 缺点&#xff1a; 系统可用性降低 系统复杂性提高 一致性问题 2、常见消息队列的比较 3、Kafka的特性 1.消息持久化 2.高吞吐量 3.扩展性强&#xff08;动态&#xff09;4集群&#xff0b;4台集群…

前端使用H5中draggable实现拖拽排序效果

文章目录 一、实现代码二、实现效果 一、实现代码 <!DOCTYPE html> <style>* {padding: 0;margin: 0;}body {display: flex;width: 100%;height: 100vh;justify-content: center;align-items: center;}.list {display: flex;width: 336px;flex-wrap: wrap}.list-i…

虚拟机Ubuntu操作系统常用终端命令(1)(详细解释+详细演示)

虚拟机Ubuntu操作系统常用终端命令 本篇讲述了Ubuntu操作系统常用的三个功能&#xff0c;即归档&#xff0c;软链接和用户管理方面的相关知识。希望能够得到大家的支持。 文章目录 虚拟机Ubuntu操作系统常用终端命令二、使用步骤1.归档1.1创建档案包1.2还原档案包1.3归档并压缩…