0

我正在尝试链接最初由两个不同的汇编程序创建的目标文件。我们有一些遗留的汇编代码,这些代码使用 68332 处理器的旧 MRI 汇编器编译成目标文件。我们正在使用 GNU Binutils m68k v2.24 开发一个新的应用程序。我们想使用由旧汇编程序构建的原始目标文件而不作任何更改。我已经配置了我们的构建环境来做到这一点。由于历史原因,我们的构建环境链接到三种输出格式:Srecord、ieee 和 ELF。当我运行时,Srecord 和 ieee 格式成功且没有错误。但是,对于 ELF 输出格式,我收到以下错误:

m68k-elf-ld:无法合并文件的目标特定数据

因此,不会创建 Elf 文件。

我首先尝试了解此错误消息可能意味着什么,但我无法理解。如果有人知道 GNU Binutils ld 文档足以指出错误定义的定义位置,我将不胜感激。

我实际上已经加载了我们的目标并运行了 Srecord 输出。它似乎像以前一样通过了许多测试,因此它似乎在某种程度上正在运行。

看起来我们的旧目标文件可能是 coff 格式的。我猜这就是问题所在。有没有办法将 coff 文件转换为 ELF 格式?

提前感谢您的任何支持。

4

1 回答 1

1

看起来我们的旧目标文件可能是 coff 格式的。我猜这就是问题所在。有没有办法将 coff 文件转换为 ELF 格式?

objcopy can be used to convert between formats. However, to do this it has to have been configured to understand both formats. You can check what formats it accepts with objcopy --info (a shortened list appears at the end of objcopy --help).

If you objcopy doesn't support the required formats, then you'll have to build binutils yourself.

于 2016-11-08T18:26:26.393 回答