我的文件是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/