我的文件是bootpack.c,其中有一个函数void f() { while(1); }
我想把它直接生成可执行的机器代码所以我这样编译:

gcc -c -nostdinc -fno-builtin bootpack.c
ld -nostdlib file.o -o bootpack.bin

但我发现bootpack.bin是3.84KB它应该只有几个字节,我想,因为它只是一个循环怎么了?如何正确生成这个文件?

最佳答案

您可以使用binary作为GNU(基于BFD)链接器的输出格式:

ld -nostdlib file.o --oformat=binary -o bootpack.bin

然后,可以使用以下工具拆解:
objdump -b binary -m i386 -D bootpack.bin

(用目标体系结构代替i386)。

关于c - 如何直接生成可执行函数代码的C函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12514727/

10-10 07:54