我正在尝试objdump -d fileName
在 s-rec 文件上使用它并返回未知的体系结构,但是它可以识别fileName: file format srec
我查看objdump --help
并在支持的目标下列出了 srec 和 symbolsrec。
我努力了
objdump -d -M srec myFile
objdump -d -m srec myFile
解决这个问题的最佳方法是什么?备择方案?
我正在尝试objdump -d fileName
在 s-rec 文件上使用它并返回未知的体系结构,但是它可以识别fileName: file format srec
我查看objdump --help
并在支持的目标下列出了 srec 和 symbolsrec。
我努力了
objdump -d -M srec myFile
objdump -d -m srec myFile
解决这个问题的最佳方法是什么?备择方案?
SREC(又名 S-Record)格式类似于原始二进制文件——它只包含字节值,但与 ELF 不同的是,它没有关于所用 CPU 或操作系统的元数据。
如果您知道所使用的CPU,你可以将它传递到objdump
与-m
开关,例如:
objdump -m arm -D file.srec
通常objdump
应该自动识别格式,但您也可以使用-b srec
与这些文件一起使用的常见 CPU 包括以前的摩托罗拉系列,例如 6800/6812(以及派生的飞思卡尔的 HC12)、68K/Coldfire,但有时也有其他的,例如 8051
使用objdump -i
本列出您的版本所支持的处理器和文件格式。您可能需要进行自定义 binutils 构建以支持您的目标 CPU。
如果这最终对其他人有用,我有同样的错误,但它是在交叉编译项目中。我的问题是我的 CMake 工具链错误地将 CMAKE_OBJDUMP 设置为 /usr/bin/objdump 而不是 /usr/bin/arm-none-eabi-objdump。我通过强制我的 toolchain.cmake 文件使用 /usr/bin/arm-none-eabi-objdump 和 /usr/bin/arm-none-eabi-objcopy 解决了这个问题,方法是在任何调用之前将这些行添加到我的 toolchain.cmake 中find_program(...):
unset(CMAKE_OBJCOPY CACHE)
unset(CMAKE_OBJDUMP CACHE)
我的 CMake 版本是 3.16.3。我在这里提交了一个错误报告:https : //gitlab.kitware.com/cmake/cmake/-/issues/20787