Pra*_*hal 5 c gcc binaryfiles ld
我应该如何从两个对象(.o)文件生成原始二进制文件?
我想要nasm -f bin在编译.asm文件时生成的纯二进制格式,但是对于.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
Run Code Online (Sandbox Code Playgroud)
该文件kernel.c以
__asm__("call _kmain");
__asm__("ret");
void kmain(void) { ... }
Run Code Online (Sandbox Code Playgroud)
有趣的部分是在汇编程序中编写加载程序.
| 归档时间: |
|
| 查看次数: |
2288 次 |
| 最近记录: |