我正在尝试ld
在内核的程序集文件上使用 linux 中的命令。要使用 grub 启动,它需要位于 1Mb 地址之后。所以我的链接脚本有文本到地址 0x00100000。
这是我正在使用的链接器脚本:
SECTIONS {
.text 0x00100000 :{
*(.text)
}
textEnd = .;
.data :{
*(.data)
*(.rodata)
}
dataEnd = .;
.bss :{
*(.common)
*(.bss)
}
bssEnd = .;
}
我的问题是关于输出文件。当我查看文件的二进制文件时,文本部分从 0x1000 开始。当我更改脚本中的文本位置并使用低于 0x1000 的地址(例如 0x500)时,文本将从那里开始。但是每当我超过 0x1000 时,它就会将其四舍五入(0x2500 会将文本放在 0x500 处)。
当我指定文本应该在 0x100000 时,它不应该在输出文件中吗?或者二进制文件的另一部分是否指定还有更多工作要做。我问是因为启动我的内核时出现问题,但现在我只是想了解链接器输出。