【问题标题】:how do I put code of files into separate memory regions with the GNU Linker如何使用 GNU 链接器将文件代码放入单独的内存区域
【发布时间】:2018-04-25 06:09:48
【问题描述】:

我正在尝试使用链接器脚本 (LD) 将我的代码拆分为 2 个不同的内存区域。 即 - 所有代码都应该转到 MEM1 区域。并且只有 file2.o 应该去 MEM2 区域。

MEMORY
{
    MEM1           : ORIGIN = 0x00000000,          LENGTH = 100K
    MEM2           : ORIGIN = 0x00800000,          LENGTH = 100K
}


SECTIONS
{
    .text    : { *(.text .text.*) } >MEM1
}

如何排除 file2.o 到 MEM1 并将其定向到 MEM2? 我尝试使用 EXCLUDE_FILE(用于 file2.o 和 MEM1 区域)但没有成功。

任何帮助/指导都会有所帮助

谢谢

【问题讨论】:

    标签: linker gnu ld linker-scripts


    【解决方案1】:

    来自 LD 手册,3.6.4.2 Input Section Wildcard Patterns

    如果文件名与多个通配符模式匹配,或者如果文件名显式出现并且还与通配符模式匹配,则链接器将使用链接脚本中的第一个匹配

    你尝试过这样的事情吗?

    .text2 : { file2.o(.text .text.*) } >MEM2
    .text  : {       *(.text .text.*) } >MEM1
    

    但是,这也应该有效:

    .text  : { *(EXCLUDE_FILE(*file2.o) .text .text.*) } >MEM1
    .text2 : { file2.o(.text .text.*) } >MEM2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2011-06-26
      相关资源
      最近更新 更多