最简单的方法来组装/编译文件,没有其他ELF /对象膨胀

时间:2012-10-30 03:18:44

标签: object gcc assembly solaris strip

我无法相信这似乎有多难。我在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相关的 * 或者汇编程序认为可以帮助我初始化或者它想的任何东西。

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

提前致谢:)

2 个答案:

答案 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

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