objdump: не может использовать поставляемую машину 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);
Можете ли вы помочь мне получить правильный код сборки?
2 ответа
Поздно, но это решило мою проблему, которая такая же, как у вас, но для 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 здесь: Использование objdump для архитектуры ARM: Дизассемблирование в ARM
Тебе стоит попробовать mips-linux-gnu-objdump
, Я использую его как часть пакета binutils-mips-linux-gnu на моем Ubuntu 16.04 TLS.
Вы можете скачать его, используя 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 для получения дополнительной информации.
Попробуйте использовать капитал м. $objdump -D -M MIPS myobjfile.o
[-M опции |--disassembler-опции = опции]