【问题标题】:ARM GNU GCC linkerARM GNU GCC 链接器
【发布时间】:2013-10-26 11:51:49
【问题描述】:

这与 GNU 链接器有关。如果我有一个不是 .text 、 .data 或 .bss 的部分,我如何告诉链接器不要将该部分包含在任何这些部分中。

例如:

SECTIONS {
.text {}
.data {}
.bss {}
.sec_var {}

}

实际上,在我的情况下,sec_var 有一些全局变量,我不希望它成为数据段的一部分,但默认情况下,链接器有这个孤立部分的概念,因此它会尝试将该部分放在 .data 中。因此,最终的二进制大小增长相同。

我在 GCC 链接器中阅读:

You can use :NONE to tell the linker to not put the section in any segment at all. 

有人使用过它或有任何其他方法,因此 sec_var 不会放在 .data 部分下吗?

【问题讨论】:

    标签: gcc linker arm gnu linker-scripts


    【解决方案1】:

    类似的,

    MEMORY
    {
        bob : ORIGIN = 0x8000, LENGTH = 0x1000
        ted : ORIGIN = 0xA000, LENGTH = 0x1000
    }
    
    SECTIONS
    {
       .text : { *(.text*) } > bob
       .rodata : { *(.rodata*) } > bob
       .bss : { *(.bss*) } > ted
    }
    

    我假设您并不是真的想要 .text 中的 .rodata,但也许您希望 .text 和 .rodata 一起位于同一块内存空间中...

    【讨论】:

      猜你喜欢
      • 2019-06-10
      • 2015-07-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多