Linker 合并2个或更多ELF文件的最简单方法

Linker 合并2个或更多ELF文件的最简单方法,linker,embedded,elf,68000,coldfire,Linker,Embedded,Elf,68000,Coldfire,我正在为一个类项目编写一些嵌入式代码,该项目目前(根据需求)创建了许多srec文件并合并了它们。我希望能够将这段代码加载到QEMU中,但它通常只对ELF文件感到满意。合并原始ELF文件而不是SREC的最有效方法是什么。 同样可以接受的是,一种将srec转换回ELF并使生成的文件可加载的方法(objcopy似乎在这样做时会生成相当不完整的文件(没有其他体系结构)。 这些工具必须能够使用m68k二进制文件,但主机系统是普通的x86。也许可以使用链接器 srec文件仅包含链接/定位的可加载二进制文件,

我正在为一个类项目编写一些嵌入式代码,该项目目前(根据需求)创建了许多srec文件并合并了它们。我希望能够将这段代码加载到QEMU中,但它通常只对ELF文件感到满意。合并原始ELF文件而不是SREC的最有效方法是什么。 同样可以接受的是,一种将srec转换回ELF并使生成的文件可加载的方法(objcopy似乎在这样做时会生成相当不完整的文件(没有其他体系结构)。
这些工具必须能够使用m68k二进制文件,但主机系统是普通的x86。

也许可以使用链接器


srec文件仅包含链接/定位的可加载二进制文件,elf文件包含在生成二进制文件时丢失的其他元数据,因此可能无法恢复到elf,尤其是在需要重新定位elf的情况下。

请查看。它包含WriteObj和Writer示例。通过使用该库,您将能够在不同的主机平台上创建ELF二进制文件。

我发现解决我原来问题的最简单的方法实际上是将SREC加载添加到qemu。我已经在修改源代码以添加板支持,因此SREC支持没有太多额外的工作。我在github上找到了一些已经这样做的人的代码,并将其用作我的工作

轻松。。。 让我们假设:a.c和b.c

gcc a.c -c -o a.o
gcc b.c -c -o b.o
ld -r a.o b.oc -o c.o
c、 o现在包含a.o和b.o作为可重新定位的ELF文件

--伊万似乎是“问题”的答案,但不是问题的答案……至少不像标题中所说的那样。