arm-none-eabi-gcc:SECTIONS:语法不清楚* <archivename> .a:

时间:2015-04-29 17:17:43

标签: c gcc arm linker-scripts

即使在阅读了几个手册页和指南之后,我找不到一个非常具体问题的明确答案。我处理标题中提到的工具链的链接描述文件。在开发过程中,我想将静态库(存档,.a)链接到RAM中的某个位置。我可以通过像常规.o文件一样处理它来完成此任务,如下例所示:

SECTIONS {
  outputa 0x10000 :
    {
    all.o
    foo.o (.input1)
    }
  outputb :
    {
    foo.o (.input2)
    foo1.o (.input1)
    }
  outputc :
    {
    *(.input1)
    *(.input2)
    }
}

经过漫长的旅程,我在另一个Question找到了一个提示。这引出了我目前的解决方案:

...
    .ramlib : ALIGN(4)
        {
            *liblpcspifilib_M3.a: (*);
        } > RamLoc40  AT>MFlashA512
...

请注意冒号语法。这会将liblpcspifilib的所有内容链接到Ram。但是没有“:”它就不会链接任何东西。即使在我发现如何解决问题之后,我也找不到有关该行为的任何其他信息。

任何人都可以向我解释这个吗?

1 个答案:

答案 0 :(得分:1)

由于某种原因,在官方GNU文档中很难找到这些信息,所以我认为它是某种扩展。第50页的Here告诉我们:

  

您还可以通过编写模式来指定存档中的文件   匹配存档,冒号,然后匹配文件的模式,   结肠周围没有空格。

‘archive:file’ matches file within archive
‘archive:’ matches the whole archive
‘:file’ matches file but not one in an archive