我无法相信这似乎有多难。我在SPARC Solaris 8上工作,我们有一些GNU-gcc(3.4.2)和'as'汇编程序(Sun WorkShop 6 2003/12/18 Compiler Common 6.0)。
无论如何,我已经尝试了几种输出纯二进制文件的方法。比如
gcc -c yadda.s
或仅调用汇编程序
as yadda.s
我还调查了汇编程序手册页,但我没有找到太多突发新闻。 :( AS Man页面: http://pastebin.com/0FSNxhq1
所以,我仍然在生成的目标文件中得到一些Bloat。我不希望这个前导50个字节的ELF相关的 * 或者汇编程序认为可以帮助我初始化或者它想的任何东西。
我正在寻找的只是我的代码的纯二进制输出。
提前致谢:)
答案 0 :(得分:6)
汇编程序不输出可执行代码,它输出一个目标文件。要使其可执行,您需要使用ld
链接它。此命令允许您指定输出格式,可以是二进制格式(如果您的构建支持它)。
as yadda.s -o yadda.o
ld yadda.o -o yadda --oformat=binary
您应该可以使用gcc:
在一行中执行此操作gcc yadda.s -o yadda -Xlinker --oformat=binary
答案 1 :(得分:2)
如果您真的想要原始二进制文件,可以使用以下命令从ELF文件生成一个文件:
objcopy -O binary yadda.elf yadda.bin
请注意,您将无法正常运行生成的文件,因为内核将不再知道如何加载它。