利用objdump -x main.exe的输出与objdump -x main.o输出的不同是
时间: 2024-05-25 21:12:26 浏览: 140
`objdump -x main.exe` 和 `objdump -x main.o` 命令都是用来查看目标文件的内容,但是它们的输出内容有所不同。
- `objdump -x main.exe` 用于查看可执行文件的头部信息和节表信息。
- `objdump -x main.o` 用于查看编译后的目标文件的头部信息和节表信息。
因此,`objdump -x main.exe` 输出的是可执行文件的详细信息,包括可执行文件的入口地址、节表信息、程序头信息、符号表信息等;而 `objdump -x main.o` 输出的是编译后的目标文件的详细信息,包括目标文件的节表信息、符号表信息等。
相关问题
利用objdump -x main.exe的输出与objdump -x main.o输出sections的不同是
objdump -x main.exe 和 objdump -x main.o 都可以输出文件的各个节(sections)的信息,但是它们输出的内容不同。
objdump -x main.o 输出的是目标文件中的节信息,而 objdump -x main.exe 输出的是可执行文件中的节信息。因此,objdump -x main.exe 中会包含一些在链接过程中才会生成的节(如 .text、.data 等),而 objdump -x main.o 中不会包含这些节。
另外,objdump -x main.exe 还会输出一些可执行文件特有的信息,如入口点地址、程序头表信息等。而 objdump -x main.o 只会输出目标文件的信息,不包含这些可执行文件特有的信息。
objdump -t 输出结果解析
`objdump -t` 是一个用于查看目标文件符号表的命令。它可以列出目标文件中的符号,包括函数、变量和常量等。
下面是 `objdump -t` 输出结果的解析:
```
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 puts
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __libc_start_main
0000000000000000 DF *UND* 0000000000000000 GLIBC_2.2.5 __gmon_start__
0000000000000000 w *UND* 0000000000000000 _ITM_deregisterTMCloneTable
0000000000000000 w *UND* 0000000000000000 __cxa_finalize
0000000000601038 g O .data 0000000000000008 global_variable
00000000004004d6 g F .text 000000000000001f main
```
每一行的含义如下:
- 第一列:符号的地址,可能是绝对地址或相对地址。
- 第二列:符号的类型。`w` 表示弱符号(weak symbol),`g` 表示全局符号(global symbol)。
- 第三列:符号的绑定类型。`U` 表示未定义符号(undefined symbol),`T` 表示文本段符号(text segment symbol),`D` 表示数据段符号(data segment symbol)。
- 第四列:符号的大小,如果是函数则表示代码段大小,如果是数据则表示数据段大小。
- 第五列:符号的版本信息。
- 第六列:符号的名称。
例如,`main` 函数的符号信息为:
```
00000000004004d6 g F .text 000000000000001f main
```
它的地址为 `0x4004d6`,类型为 `g`(全局符号),绑定类型为 `F`(文本段符号),大小为 `0x1f`(代码段大小),版本信息为空,名称为 `main`。
阅读全文