RISC-V:反汇编.img文件时提示‘file format not recognized’的解决方法
解决RISC-V .img文件反汇编报错的方法
问题本质
riscv64-unknown-elf-objdump仅支持解析ELF格式的可执行/目标文件,而你手里的.img是原始二进制镜像或磁盘镜像,不属于标准ELF格式,所以工具无法识别。
具体解决办法
如果是纯二进制代码镜像(无文件头)
直接指定文件格式和架构,执行以下命令:riscv64-unknown-elf-objdump -b binary -m riscv -d xxx.img > xxx.asm要是镜像有指定的加载基地址(比如RISC-V常见的0x80000000),可以加上地址调整参数修正反汇编的地址:
riscv64-unknown-elf-objdump -b binary -m riscv --adjust-vma=0x80000000 -d xxx.img > xxx.asm如果是磁盘镜像(含分区/文件系统)
先挂载镜像提取里面的ELF文件再反汇编:- 查看镜像的分区信息:
fdisk -l xxx.img - 根据分区起始扇区计算偏移(起始扇区数 × 512),挂载分区:
mount -o loop,offset=XXX xxx.img /mnt - 进入挂载目录找到目标ELF文件,再用
riscv64-unknown-elf-objdump反汇编该文件。
- 查看镜像的分区信息:
先确认镜像类型
可以用file命令快速判断.img的类型,再选择对应方法:file xxx.img
内容的提问来源于stack exchange,提问作者Hengzhuang Li
相关产品推荐
相关产品推荐

