使用objdump -d showStack.c --di sassembler-options=intel 报错 file format not recognized
时间: 2024-10-08 14:16:56 浏览: 41
当你尝试使用`objdump -d showStack.c --disassemble=intel`命令查看C源文件`showStack.c`的汇编代码时,报出"file format not recognized"错误,这通常意味着objdump无法识别给定文件的格式。这个错误可能有以下几个原因:
1. **文件不是二进制可执行文件**:objdump用于分析二进制可执行文件、共享库或目标文件,如果`showStack.c`是一个未经过编译或链接的C源文件,那么它不是一个适合objdump处理的对象。
2. **缺少目标文件**:如果你试图解析的是源码而非生成的可执行文件,你需要先通过编译过程(如`gcc showStack.c -o showStack`)生成对应的.o文件(目标文件),然后才能用objdump处理。
3. **不支持的架构或平台**:objdump需要知道正在分析的文件是为哪种架构设计的(比如x86、arm等)。如果`showStack.c`是在特定平台上编译的,并且你的系统不支持该平台的指令集,也可能导致这个问题。
4. **版本兼容问题**:objdump的版本可能不支持当前文件的编译器生成的二进制格式。确保使用的objdump与你的编译器匹配。
要解决这个问题,你可以首先确认`showStack.c`是否已正确编译并产生了可执行文件,然后针对正确的平台和架构运行objdump。如果文件是源码,记得生成目标文件再分析。例如:
```sh
gcc -c showStack.c
objdump -D -M intel showStack.o
```
阅读全文