如何用ld链接具有不同起始地址的2个文件

时间:2019-04-29 19:40:03

标签: gcc x86 ld osdev

我正在尝试构建一个小型操作系统。我有一个asm文件,它将处理器置于启用分页的64位模式下。之后,我跳到我的C代码。我希望将C代码和asm代码链接到同一文件中,但C代码的基地址为0xFFFFFF8000000000,而asm文件为0x5000。我如何用ld执行此操作。 这是我到目前为止的内容:

nasm -f elf64 os_init.asm -o ../bin/os_init.o
gcc -c -Os -nostdlib -nostartfiles -nodefaultlibs -fno-builtin vga/*.c utils/*.c *.c memory_management/*.c
ld -Ttext 0x5000 ../bin/os_init.o *.o -o ../bin/kernel.out
objcopy -S -O binary ../bin/kernel.out ../bin/kernel.bin

当前两个文件都以0x5000链接

0 个答案:

没有答案