.o 文件怎么打开?
How to open .o file?
编译一个C程序后,你得到一个.o文件。我知道这是一个由“0”和“1”组成的文件,如果是在成功编译程序后形成的。
但是我想看看文件里有什么!
这里有几个选择。
首先(也是最简单的)是使用某种东西来解码文件以向您展示它是什么。 linux 上的 objdump 就是这样做的。
gcc -c test.c
给你test.o
objdump -D test.o
将解码文件并在标准输出上向您显示其中的内容(因此将其传输到 less 或 similar)
Objdump 输出显示未链接的目标文件。地址无效,必须由链接器修复。
格式是
首先是行号
然后是 cpu 指令的一些字节数,这些显示在 hexadecimal.eg 中 14 表示 00010100
接下来是这些字节代表的指令
0: 14 00 adc [=12=]x0,%al
所以上面我们有函数的第 0 行 - 它是未链接的)
14 00 - 这些是字节
他们的意思是将进位 0 添加到 al 寄存器,将结果存储在 al
另一种方法是使用十六进制编辑器,在没有任何帮助的情况下尝试计算出 14 00 的含义。
祝你好运。
您可以从终端使用 hexdump
命令来显示内容。
语法: $ hexdump <filename>.o
它将以 hexadecimal
形式显示内容。
编译一个C程序后,你得到一个.o文件。我知道这是一个由“0”和“1”组成的文件,如果是在成功编译程序后形成的。 但是我想看看文件里有什么!
这里有几个选择。
首先(也是最简单的)是使用某种东西来解码文件以向您展示它是什么。 linux 上的 objdump 就是这样做的。
gcc -c test.c
给你test.o
objdump -D test.o
将解码文件并在标准输出上向您显示其中的内容(因此将其传输到 less 或 similar)
Objdump 输出显示未链接的目标文件。地址无效,必须由链接器修复。
格式是
首先是行号
然后是 cpu 指令的一些字节数,这些显示在 hexadecimal.eg 中 14 表示 00010100
接下来是这些字节代表的指令
0: 14 00 adc [=12=]x0,%al
所以上面我们有函数的第 0 行 - 它是未链接的) 14 00 - 这些是字节 他们的意思是将进位 0 添加到 al 寄存器,将结果存储在 al
另一种方法是使用十六进制编辑器,在没有任何帮助的情况下尝试计算出 14 00 的含义。
祝你好运。
您可以从终端使用 hexdump
命令来显示内容。
语法: $ hexdump <filename>.o
它将以 hexadecimal
形式显示内容。