我正在寻找 unix 命令,以十六进制显示由 cc 编译器编译的任何可执行项的标头部分。我曾经有过这个,现在我不记得了。我只是想看看我编译的任何c程序开头的编译器代码是什么
我知道我可以使用"十六进制转储[文件名]",但这并不能隔离标头部分。希望我已经很好地解释了自己.....
命令readelf
在大多数Linux系统上都可用,并且能够显示ELF文件的许多部分。 您可以使用readelf -H
来获取各种选项的简短概要。
若要仅获取文件头,可以使用readelf -h
或readelf --fileheader
来显示文件头。
要以十六进制形式查看它,您可以使用命令 xxd
. 鉴于 elf 标头为 64 字节(在 64 位计算机上(,您可以使用xxd -l 64
Linux 中的 Objdump 命令用于提供有关目标文件的全面信息。此命令主要由从事编译器工作的程序员使用,但在调试时,对于普通程序员来说,它仍然是一个非常方便的工具。在本文中,我们将通过一些示例了解如何使用 objdump 命令。
objdump 的基本语法是:
objdump [options] objfile...
此命令有多种选项可用。
例如,阶乘是我必须编译的 c 程序。
1.显示对象格式特定的文件头内容 -p 选项
下面的示例打印特定于对象文件格式的信息。
$ objdump -p factorial
- 使用 -x 选项显示所有标头的内容
可以使用 -x 选项检索与目标文件中的所有标头相关的信息。
objdump -x factorial