几个命令了解ELF文件的”秘密“
副标题[/!--empirenews.page--]
前言 在Linux中,可执行文件的格式是ELF格式,而有一些命令可以帮助我们了解它们更多的“秘密”,以此来帮助我们解决问题。 示例程序 我们的示例程序如下:
编译:
得到hello可执行文件。 查看文件类型 file命令可以用来查看文件类型:
从结果中,我们可以知道,它是ELF可执行文件,且是64位程序,有动态链接,最后的not stripped也表明了它保留了符号表信息或者调试信息。 如果不是可执行文件,它的信息是怎样的呢?举个例子:
看到了吧。 查看ELF头 readelf用于查看ELF文件,而:
可以看到它是EXEC,即可执行文件,且小端程序,运行于X86-64。在交叉编译的时候,这个文件头的信息也非常有用。例如你在x86的机器上交叉编译出powerpc的可执行文件,在powerpc上却不被识别,不能运行,不如用readelf看看它的Machine字段,是不是没有编译好。 查找ELF文件中的字符串 例如,你在文件中写入了版本号或者特殊字符串,可以通过strings命令搜索到:
查看ELF文件各段大小
这里可以看到代码段,数据段各自占多少,必要时候还可以根据需要优化代码,减少磁盘空间占用。 查看链接的动态库 运行时出现找不到动态库?不如看看它链接了哪些库吧:
可以看到它链接的动态库是/lib/x86_64-linux-gnu/libc.so.6,而如果该文件不存在,则运行时将会出错。这里也可以参考《动态库的制作和使用》。 查看符号表 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 备份安装的包并在全新安装的Ubuntu上恢复它们
- for-loop – 单行语句:%% i’意外在这个时候’
- 如何在Windows 10中增强文本光标和鼠标指针
- .net – 缺少系统文件System.Windows.Media我该怎么办?
- win10通知中心怎么关掉声音 win10通知中心声音设置方法
- windows-server-2012 – windows server 2012解决方案与vga
- windows-7 – Cisco Anyconnect:禁用远程桌面的Vpn建立功能
- 微软宣布为美国政府延长Windows 7安全支持期限:因为这事
- Windows – IIS7 ASP.NET应用程序 – 2个相同的应用程序池中
- Win10正式版怎么免费激活 Win10正式版免费激活的方法