我正在尝试在s-rec文件上使用objdump -d fileName,并且返回未知的体系结构,但是它可以识别fileName: file format srec

我已经尝试过

objdump --help

objdump -d -M srec myFile

解决此问题的最佳方法是什么?替代品?

#1 楼

SREC(aka S-Record)格式类似于原始二进制文件-它仅包含字节值,但与ELF不同,它不包含有关所使用的CPU或OS的元数据。可以使用objdump开关将其传递给-m,例如: br />与这些文件一起使用的通用CPU包括以前的Motorola系列,例如6800/6812(以及飞思卡尔的HC12),68K / Coldfire,但有时也包括其他一些,例如8051

使用objdump -m arm -D file.srec列出构建所支持的处理器和文件格式。您可能需要构建自定义的binutils构建以支持目标CPU。

评论


非常感谢您的宝贵时间,事实上,我的目标是Motorola系列。使用objdump -i我没有看到它,所以我可能不得不走自定义构建路径...

–0siris
18年5月23日在21:17



#2 楼

万一这最终对其他人有用,我有相同的确切错误,但这是在交叉编译项目中。我的问题是我的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中to find_program(...):



unset(CMAKE_OBJCOPY CACHE)
unset(CMAKE_OBJDUMP CACHE)


我的CMake版本是3.16.3。我为此提交了一个错误报告:https://gitlab.kitware.com/cmake/cmake/-/issues/20787