我使用以下方法在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使用用户的架构?
感谢。
答案 0 :(得分:1)
首先:你不是要模仿GCC ld的-b
能力,不是吗?用更详细的术语:GCC ld实际上可以加载多种二进制格式,请参阅the documentation。如果这就是你想要达到的目标,那就是:
gcc prog.c -Wl,-b -Wl,binary file.o
可能会保存整个objcopy调用。
虽然我无法找到有关该问题的文档,但objdump -i
的输出似乎按首选项排序,因此
`objdump -i | head -n 2 | tail -n 1`
应该扩展到通常的目标架构。再说一遍:我没有关于这种行为的文档,所以最好不要盲目依赖它。