gpt4 book ai didi

c - 如何从目标文件生成纯二进制文件?

转载 作者:太空狗 更新时间:2023-10-29 14:58:53 26 4
gpt4 key购买 nike

我应该如何从两个对象 (.o) 文件生成原始二进制文件?

我想要在编译 .asm 文件时由 nasm -f bin 生成的纯二进制格式,但对于 .o 文件。

我所说的普通二进制文件是指只包含指令而不包含一些额外信息的文件,因为许多可执行文件都包含很多额外有用的信息。

参见 http://www.nasm.us/doc/nasmdoc7.html以获取相关信息。

PS:我想制作一个“普通二进制文件”以在 QEMU 中启动.

最佳答案

这勾起了我的记忆。我确信有更好的方法可以使用链接器脚本来完成此操作,但这是我年轻时愚蠢的做法:

# compile some files
gcc -c -nostdlib -nostartfiles -nodefaultlibs -fno-builtin kernel.c -o kernel.o
gcc -c -nostdlib -nostartfiles -nodefaultlibs -fno-builtin io.c -o io.o

# link files and place code at known address so we can jump there from asm
ld -Ttext 0x100000 kernel.o io.o -o kernel.out

# get a flat binary
objcopy -S -O binary kernel.out kernel.bin

文件 kernel.c 开始于

__asm__("call _kmain");
__asm__("ret");

void kmain(void) { ... }

有趣的部分是用汇编语言编写加载程序。

关于c - 如何从目标文件生成纯二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com