我对.obj
文件感到好奇:我几乎不知道它们是什么(或它们包含什么),所以我用Vim文本编辑器打开它们,我发现里面的是Alien之类的语言...
有没有办法了解它们代表什么以及它们的内容是什么 另外,他们使用的是什么?
感谢。
答案 0 :(得分:5)
不确定。
但是每个不同的平台都有不同的对象格式。在Windows上,您可以使用dumpbin之类的工具(dumpbin附带Visual Studio)。在Linux上,您可以使用“dumpobj”,或者反汇编程序。
这是Linux的一个很好的链接:
http://www.linuxjournal.com/article/1060
PS: objdump还允许你反汇编对象。就像你以前在DOS PC上使用“debug”一样......
答案 1 :(得分:4)
答案 2 :(得分:3)
readelf
工具擅长向您显示有关数据的部分详细信息:
$ readelf -a /usr/bin/readelf
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
...
它检查可执行文件特定部分的一些功能也可以派上用场:
$ readelf -p .rodata /usr/bin/readelf | more
String dump of section '.rodata':
[ 4] R_IA64_IMM14
[ 11] R_IA64_NONE
...
[ 1f58] Personality routine:
[ 1f70] __gcc_personality_v0
[ 1f85] __gxx_personality_v0
[ 1f9a] __gcj_personality_v0
[ 1faf] __gnu_objc_personality_v0
...
实际上拆解代码有点紧张;如果使用-g
编译代码用于调试符号,则可以使用readelf --debug-dump
来读取程序源,输入信息等。