objdump:无法使用提供的机器 MIPS

objdump: Can't use supplied machine MIPS

使用以下命令反汇编对象时出现以下错误。目标文件是为 MIPS 平台生成的。

$objdump -D -m MIPS myobjfile.o

错误:

objdump: Can't use supplied machine MIPS

我附上的片段供参考 objdump.c

  const bfd_arch_info_type *inf = bfd_scan_arch (machine);

  if (inf == NULL)
      fatal (_("can't use supplied machine %s"), machine);

你能帮我得到正确的汇编代码吗?

尝试使用大写字母 m。 $objdump -D -M MIPS myobjfile.o

[-M options|--disassembler-options=options]

你应该试试 mips-linux-gnu-objdump。 我在我的 ubuntu 16.04 TLS 上将它用作 binutils-mips-linux-gnu 包的一部分。

您可以使用 apt-get 下载它:

$sudo apt-get install binutils-mips-linux-gnu

然后尝试 运行:

$mips-linux-gnu-objdump -b binary -m mips -D myobjfile.o

-b binary代表二进制文件格式,它是可选的。

您应该访问 https://linux.die.net/man/1/x86_64-linux-gnu-objdump 以获取更多信息。

晚了一步,但这解决了我的问题,这个问题与你的问题相同,但适用于 ARM64(aarch64)。

如果您从源代码构建,您可以通过将 --enable-targets=all 传递给 ./configure 来启用所有目标架构:

git clone git://sourceware.org/git/binutils-gdb.git 
cd binutils-gdb
./configure --enable-targets=all
make

这使得 objdump 可以与所有架构一起工作,包括 MIPS

这是来自@soulseekah post 此处:Using objdump for ARM architecture: Disassembling to ARM