You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux LD链接脚本疑问:startup.o(.text)是否会被重复写入?

关于LD链接脚本中startup.o(.text)是否被重复写入的问题

先贴出你提供的LD链接脚本:

SECTIONS
{
  .text.start (_KERNEL_BASE_) : {
    startup.o( .text )
  }

  .text : ALIGN(0x1000) {
_TEXT_START_ = .;
    *(.text)
_TEXT_END_ = .;
  }

  .data : ALIGN(0x1000) {
_DATA_START_ = .;
    *(.data)
_DATA_END_ = .;
  }

  .bss : ALIGN(0x1000) {
_BSS_START_ = .;
    *(.bss)
_BSS_END_ = .;
  }
}

答案是会导致startup.o(.text)被重复写入。

原因很直接:

  • 第一个.text.start段明确将startup.o的.text节提取出来,放在_KERNEL_BASE_指定的地址位置;
  • 后面的.text段用*(.text)通配符匹配了所有目标文件的.text节,自然也包含startup.o的.text,所以这部分代码会被再次写入到.text段对应的地址区域。

如果想避免重复写入,只需要修改.text段的通配符规则,排除startup.o的.text即可,比如改成:

*(EXCLUDE_FILE(startup.o) .text)

内容的提问来源于stack exchange,提问作者shodz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:10:34