链接器脚本:我可以在多个部分中指定 (*COMMON) 吗?

Posted

技术标签:

【中文标题】链接器脚本:我可以在多个部分中指定 (*COMMON) 吗?【英文标题】:Linker Scripts: Can I specify (*COMMON) in more than one section? 【发布时间】:2021-09-01 14:54:24 【问题描述】:

如果我的链接描述文件中有两个部分,.bss 和 .newsect,我可以像下面那样在两个部分都包含 (*COMMON) 吗?为什么或为什么不?


  .bss :
  
    /* This is used by the startup in order to initialize the .bss section */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
   >RAM_D1

  .newsect :
  
    /* This is used by the startup in order to initialize the .bss section */
    _snewsect = .;         /* define a global symbol at bss start */
    __newsect_start__ = _snewsect;
    *(.newsect)
    *(.newsect*)
    *(COMMON)

    . = ALIGN(4);
    _enewsect = .;         /* define a global symbol at bss end */
    __newsect_end__ = _enewsect;
   >RAM_D1


【问题讨论】:

【参考方案1】:

这不会造成任何伤害,但是在您第一次指定它们时,所有匹配的输入节都已分配给输出节,因此第二次将不会匹配任何内容,也不会执行任何操作。

【讨论】:

@Ryan Murphy,如果这能解决您的问题,您能否接受带有左侧勾号的答案。

以上是关于链接器脚本:我可以在多个部分中指定 (*COMMON) 吗?的主要内容,如果未能解决你的问题,请参考以下文章

我无法在链接描述文件中指定 Rust 程序的起始偏移量是不是有原因?

如何在 CMake 中指定链接类型?

如何在 Webpack 插件中指定多个加载器?

是否可以在 TypeScript 导入中指定 webpack 加载器?

在 CSS 中指定多个属性选择器

npm 脚本使用 package.json 中指定的版本重命名文件