6

我无法相信这似乎有多难。我正在使用 SPARC Solaris 8。我们有某种 GNU-gcc (3.4.2) 和 'as' 汇编器 (Sun WorkShop 6 2003/12/18 Compiler Common 6.0)。

无论如何,我尝试了几种方法来输出纯二进制文件。如

gcc -c yadda.s

或仅调用汇编程序

作为 yadda.s

我还调查了汇编器手册页,但没有发现太多突发新闻。:( 作为手册页: http: //pastebin.com/0FSNxhq1

所以,我在生成的目标文件中仍然有一些膨胀。我不希望这个前 50 字节的 ELF 相关*或任何汇编器认为有助于我的初始化或它所想的任何东西。

我正在寻找的只是我的代码的纯二进制输出。

提前致谢 :)

4

2 回答 2

9

汇编器不输出可执行代码,它输出一个目标文件。要使其可执行,您需要使用ld. 此命令允许您指定输出格式,可以是二进制(如果您的构建支持它)。

as yadda.s -o yadda.o
ld yadda.o -o yadda --oformat=binary

您应该能够使用 gcc 在一行中完成此操作:

gcc yadda.s -o yadda -Xlinker --oformat=binary
于 2012-10-30T04:19:09.477 回答
4

如果您真的想要一个原始二进制文件,您可以使用以下命令从 ELF 文件生成一个:

objcopy -O binary yadda.elf yadda.bin

请注意,您将无法正常运行生成的文件,因为内核将不再知道如何加载它。

于 2012-10-30T03:41:43.373 回答