ldd nm strip strings readelf file查看信息

2023-05-16


ldd <可执行文件名>       查看可执行文件链接了哪些  系统动态链接库
nm <可执行文件名>       查看可执行文件里面有哪些符号
strip <可执行文件名>      去除符号表可以给可执行文件瘦身。strip后使用nm查看不到符号信息。
如果我们想从可执行程序里面提取出来一点什么文本信息的话,还可以用strings命令
strings <可执行文件名>
readelf -a <可执行文件名>  查看函数等信息。  

file 显示文件类型  

Linux操作系统上面的动态共享库大致分为三类:
1、操作系统级别的共享库和基础的系统工具库
比方说libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/usr/lib目录下面,如果是64位操作系统,还会有/lib64和/usr /lib64目录。如果操作系统带有图形界面,那么还会有/usr/X11R6/lib目录,如果是64位操作系统,还有/usr/X11R6 /lib64目录。此外还可能有其他特定Linux版本的系统库目录。
这些系统库文件的完整和版本的正确,确保了Linux上面各种程序能够正常的运行。
2、应用程序级别的系统共享库
并非操作系统自带,但是可能被很多应用程序所共享的库,一般会被放在/usr/local/lib和/usr/local/lib64这两个目录下面。很多你自行编译安装的程序都会在编译的时候自动把/usr/local/lib加入gcc的-L参数,而在运行的时候自动到/usr/local /lib下面去寻找共享库。
以上两类的动态共享库,应用程序会自动寻找到他们,并不需要你额外的设置和担心。这是为什么呢?因为以上这些目录默认就被加入到动态链接程序的搜索路径里面了。Linux的系统共享库搜索路径定义在/etc/ld.so.conf这个配置文件里面。这个文件的内容格式大致如下:

/usr/X11R6/lib64  
/usr/X11R6/lib  
/usr/local/lib  
/lib64  
/lib  
/usr/lib64  
/usr/lib  
/usr/local/lib64  
/usr/local/ImageMagick/lib
假设我们自己编译安装的ImageMagick图形库在/usr/local/ImageMagick目录下面,并且希望其他应用程序都可以使用 ImageMagick的动态共享库,那么我们只需要把/usr/local/ImageMagick/lib目录加入/etc/ld.so.conf文件里面,然后执行:ldconfig 命令即可。
ldcofig将搜索以上所有的目录,为共享库建立一个缓存文件/etc/ld.so.cache。为了确认ldconfig已经搜索到ImageMagick的库,我们可以用上面介绍的strings命令从ld.so.cache里面抽取文本信息来检查一下:

strings /etc/ld.so.cache | grep ImageMagick  

输出结果为:

/usr/local/ImageMagick/lib/libWand.so.10  
/usr/local/ImageMagick/lib/libWand.so  
/usr/local/ImageMagick/lib/libMagick.so.10  
/usr/local/ImageMagick/lib/libMagick.so  
/usr/local/ImageMagick/lib/libMagick++.so.10  
/usr/local/ImageMagick/lib/libMagick++.so
已经成功了!
3、应用程序独享的动态共享库
有很多共享库只被特定的应用程序使用,那么就没有必要加入系统库路径,以免应用程序的共享库之间发生版本冲突。因此Linux还可以通过设置环境变量LD_LIBRARY_PATH来临时指定应用程序的共享库搜索路径,就像我们上面举的那个例子一样,我们可以在应用程序的启动脚本里面预先设置 LD_LIBRARY_PATH,指定本应用程序附加的共享库搜索路径,从而让应用程序找到它。  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ldd nm strip strings readelf file查看信息 的相关文章

  • 读取所有目录中的所有文件[重复]

    这个问题在这里已经有答案了 我有代码可以读取单个文本文件的值 但在读取所有目录中的所有文件并将所有内容放在一起时遇到困难 这是我所拥有的 filename filesuffix location os path join Test file
  • Java如何检测文件变化

    有没有办法以某种方式触发一个事件 每次文件更改时都会执行某些操作 我的意思是类似的东西 用伪代码 if DetectedFileModified pathToFile do stuff 我知道我可以定期执行此操作 但我可以在没有计时器的情况
  • 在Python中更改文件头的有效方法

    我正在尝试编写一个 python 脚本来更新一些大文件的标头 仅第一行 但是由于新标头不必与原始标头的大小 以字节为单位 相同 无论如何我可以更改标题而不触及大文件的其余部分 或者我必须通读所有内容并将它们写回文件 不 您可以在不触及整个文
  • 在 JSON 对象中嵌入文件附件

    是否可以将文件附件嵌入到 JSON 对象中 我有一个 HTML 表单 其中有几个文本字段输入和一个文件附件 我想将包含所有这些表单数据 包括文件附件 的 JSON 对象发送到服务器 Java 中有没有特定的库可以做到这一点 你能给出可能的解
  • BufferedWriter在java中如何工作

    我经常将文本输出到文件中 我想知道一件事 怎么办BufferedWriterwork 当我打电话时它会在文件中写入文本吗writer write text 如果不写文本 我需要使用flush函数来写数据吗 例如 File file new
  • vb.net 的 file.shortpath

    我正在将我的项目从 vb6 转换为 vb net vb net中有shortpath的模拟方法吗 Dim DestinationFile As Scripting File DestinationFile ShortPath Thanks
  • 在 JQuery 中通过 AJAX 上传文件

    我是 JQuery AJAX 的新手 我想用jquery实现文件上传 是否可以使用 JQuery AJAX 进行文件上传并将其发送到 Servlet Servlet 可以使用 apache file commons 来上传文件 有人可以建议
  • 使用 jax-rs 发送临时文件

    我正在尝试使用 jax rs 发送一个临时文件 并在下载完成后删除该临时文件 为此 我对 InputSream 进行了子类化 以便在流关闭后收到通知 这是我到目前为止所拥有的 GET Path download fileName publi
  • 如何等到File.Exists?

    我有一个应用程序 正在侦听所选文件夹中的 log 文件 我用了FileSystemWatcher 但有一个问题 负责制作该文件的另一个应用程序采取以下步骤 制作一个 gz 文件 解压到txt文件 一些随机文件名 将 txt 名称更改为带有
  • 使用标准 C++/C++11,14,17/C 检查文件是否存在的最快方法?

    我想找到最快的方法来检查标准 C 11 14 17 或 C 中是否存在文件 我有数千个文件 在对它们进行操作之前 我需要检查它们是否全部存在 我可以写什么来代替 SOMETHING 在下面的函数中 inline bool exist con
  • Django FileField 未使用 SimpleUploadedFile 对象进行验证

    我通过ajax上传文件 然后创建一个SimpleUploadFile对象并将其传递给request FILES 这不会传递form is valid 我已在下面记录了 SimpleUploadedFile 字典和 request FILES
  • 如何在 Javascript 中创建动态文件+下载链接? [复制]

    这个问题在这里已经有答案了 通常 HTML 页面可以包含可从服务器下载的文档 PDF 等 的链接 假设有一个启用 Javascript 的网页 是否可以从用户浏览器中动态创建一个文本文档 例如 并添加一个链接来下载该文档 而无需往返服务器
  • 使用 RecursiveDirectoryIterator 在顶部按最新日期对文件进行排序

    现在默认情况下它按字母表显示 我不希望这样 我想使用以下方式对文件进行排序递归目录迭代器最新文件位于顶部 按降序排列 还使用if 条件比较日期并获取该日期的文件
  • C/C++:如何将数据存储在B树中的文件中

    在我看来 将数据作为文件存储在 B 树中的一种方法可以使用 C 语言使用具有结构序列 数组 的二进制文件来有效完成 每个结构代表一个节点 因此 我们可以使用类似于使用数组创建链表的方法来连接各个节点 但随之而来的问题是删除节点 因为在一个大
  • 提取文本文件每行第一个逗号之前的文本

    我有一个如下所示的文件 Breve a writ used more frequently in the plural brevia Brevia magistralia official writs framed by the clerk
  • r 读取多个 .dat 文件

    你好 我是新来的 也是 R 的初学者 我的问题 如果我有多个文件 test1 dat test2 dat 要在 R 中使用 我使用此代码来读取它们 filelist lt list files pattern dat df list lt
  • 无法从字符串中删除“\r\n”

    我有一个像这样的字符串 la lala 135 1039 921 r n 而且我无法删除 r n 最初这个字符串是一个字节对象 但后来我将它转换为字符串 我尝试过 strip r n 与 replace r n 但什么也没有 gt gt g
  • 如何使用 Objective-C 使文件在 Finder 中不可见

    如果可能的话 我需要使用 Objective C 或使用 C 调用将文件隐藏在查找器中以及聚光灯下 Thanks 您可以使用 chflags path to file UF HIDDEN 隐藏任何文件 See 手动更改标志 2 https
  • 如何在scala的specs2测试中使用jUnit的TemporaryFolder?

    我正在使用 Playframework 编写测试 我需要创建一个临时文件 RunWith classOf JUnitRunner class DiagnosticSpec extends Specification Rule val tem
  • php:将变量内容下载为文件

    题主可以吗 我有一个正在执行的脚本 有一次 我在变量中有一大段文本 我可以将其作为可下载文件提供 而不实际将变量内容写入磁盘吗 如果您的意思是让用户单击链接并弹出一个对话框以将某些内容保存为文本文件

随机推荐

  • 使用码云(Gitee)进行代码管理,以及VsCode关联Git

    一 安装git Git的下载 安装与配置 git 简明指南 二 注册码云 1 xff09 注册码云账号 xff1a 码云官网 2 xff09 绑定邮箱 xff1a 右上角 头像 设置 邮箱管理 三 本地项目与码云关联 1 本地项目上传至码云
  • 删掉带页眉的空白页结果把所有页眉都删掉解决办法

    点击视图 大纲 会发现在之前的操作中有两个分节符 xff0c 把上面那个删掉即可 参考链接https zhidao baidu com question 105591450 html 小问题也蛮耗时的
  • ROS之多个订阅数据同步

    做传感器数据融合时 xff0c 常常会需要用到多个数据 xff0c 即需要同时订阅多个话题 那么 xff0c 如何同步这些传感器数据的时间辍 xff0c 并将它们放入一个回调函数中进行处理呢 xff1f 参考文档 xff1a http wi
  • C++中使用strtok函数分割字符串String

    C 43 43 中使用strtok函数分割字符串String string str getline cin str vector lt string gt vec char p 61 strtok char str c str 34 34
  • 利用python获取IP资源池的方法

    在使用爬虫的时候 xff0c 经常会遇到IP被禁止的情况 xff0c 所以一般都需要一个资源池来提高降低风险 以下代码中 xff0c 基于python3 7 xff0c 数据库用的是POSTGRESQL11 xff0c 为了效率使用了队列
  • DNS笔记(一):yum方式安装DNS与简单设置

    思路 客户端主机 gt DNS服务端主机 gt 后台主机 DNS服务端主机防火墙 iptables I INPUT 4 m state state NEW p tcp dport 53 j ACCEPT iptables I INPUT 4
  • Linux基础知识之df和du的差异

    创建文件前统计 xff0c 可以看出磁盘总共50G xff0c 已使用13G root 64 payne du sh 2 gt dev null 13G root 64 payne df h Filesystem Size Used Ava
  • Linux网络异常排查手段

    网络不通常用工具 xff1a ping mtr nmap telnet curl 域名IP服务器解析工具 xff1a nslookup dig 1 ping 启动方式及解释 xff1a ping c3 www baidu com PING
  • Prometheus学习(一):单节点部署与配置+Grafana安装

    Prometheus学习 xff08 一 xff09 xff1a 单节点部署与配置 43 Grafana安装 一 配置前准备1 下载软件2 主机列表3 同步时间4 创建账户 二 安装与配置1 node exporter安装与配置2 Serv
  • ELK笔记(一):Centos7部署elasticsearch-7.8.0集群

    Centos7部署elasticsearch 7 8 0集群 1 部署前准备1 1 系统选择1 2 主机列表1 3 下载 解压缩安装包1 4 创建用户 2 修改配置文件2 1 elastic search配置文件2 2 OS配置文件 3 启
  • centos8安装ansible-awx:9.0.1

    为什么要这要贴出来呢 xff0c 因为这个鬼东西我真的不知道为什么能跑成功 xff0c 先是在centos7上安装 xff0c 结果重复多次后成功了 xff0c 然后重新装一遍 xff0c 又失败了 真的不知道怎么装了 xff0c 甚至连在
  • 使用helm创建elastic

    coding https gitee com pangfaheng devops coding tree master kubernets elastic git https github com elastic helm charts 1
  • jstatd监控jvm内存消耗

    env localhost MacOS11 6 remote server run a centos7 server in vmware use MacOS monitoring remote server remote server op
  • 深度强化学习笔记之PPO算法理解(1)

    深度强化学习笔记之PPO算法理解 xff08 1 xff09 笔记内容来源于李宏毅老师的深度强化学习的PPT 关于PPO xff08 Proximal Policy Optimization xff09 xff0c 李老师分为了三个部分进行
  • apt install 报无法修正错误

    E 无法修正错误 xff0c 因为您要求某些软件包保持现状 xff0c 就是它们破坏了软件包间的依赖关系 很可能是ubuntu更换软件源出了问题 问题在于软件源设置不对 xff0c 装好Linux后 xff0c 人们都会去修改 etc ap
  • ubantu系统服务器系统搭建详情及配置步骤(DELL poweredge r730服务器)

    实验室新到了一批显卡 xff0c 周末跟着几位师兄在机房混迹学着ubantu系统系统服务的部署 xff0c 配置 xff0c 搭建 xff0c 现记录于博客备忘 准备 xff1a ubantu镜像文件 ubuntu 16 04 3 serv
  • 树莓派升级(安装)Python3.6

    如果你的树莓派或者其他Linux主机上安装的Python版本比较低 xff0c 那么在安装Homeassisant等软件时 xff0c 会出现一些故障导致无法安装 xff0c 所以本文讲解如何在python版本比较低的树莓派上升级树莓派的版
  • 研究了几天CEF的感受

    cef搞到现在 xff0c 用已经勉强用上了 xff0c 性能也很好 xff0c 但是最大的问题是js在render进程里跑 xff0c 这一点和Electron是一样的 xff0c 也是chrome这类浏览器标准做法 xff0c 其实是不
  • Jenkins安装过程

    一 什么是自动化测试平台 前言 xff1a 在一些做嵌入式产品的公司里 xff0c 为了确保开发主线代码的稳定 xff0c 在做版本升级的时候要考虑到代码改动对主线功能造成的影响 xff0c 避免造成严重的版本问题 xff0c 需要在每次代
  • ldd nm strip strings readelf file查看信息

    ldd lt 可执行文件名 gt 查看可执行文件链接了哪些 系统动态链接库 nm lt 可执行文件名 gt 查看可执行文件里面有哪些符号 strip lt 可执行文件名 gt 去除符号表可以给可执行文件瘦身 strip后使用nm查看不到符号