3

我使用以下方法在 C 程序中嵌入了一个文本文件:http ://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967

a.out:prog.c file.text
    objcopy --input binary --output elf64-x86-64 --binary-architecture i386 file.text file.o
    gcc prog.c file.o

objcopy需要使用“--output”选项指定目标。

如何在 Makefile 中设置“--output”,以便 objcopy 使用用户的架构?

谢谢。

4

1 回答 1

3

首先:你不是想模仿-bGCC ld 的能力,是吗?更详细地说:GCC ld 实际上可以加载许多二进制格式,请参阅文档。如果这就是您想要实现的目标,例如:

 gcc prog.c -Wl,-b -Wl,binary file.o

可能会为您节省整个 objcopy 调用。

虽然我无法找到有关该问题的文档,但输出objdump -i似乎是按偏好排序的,所以

 `objdump -i | head -n 2 | tail -n 1`

应该扩展到通常的目标架构。再次声明:我没有关于这种行为的文档,所以最好不要盲目依赖它。

于 2011-10-15T18:26:15.337 回答