0

这与 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 部分下?

4

1 回答 1

0

像这样的东西,

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 一起位于同一块内存空间中......

于 2013-10-18T00:22:56.160 回答