arm-none-eabi-gcc: SECTIONS: 语法不清晰 *<archivename>.a:
arm-none-eabi-gcc: SECTIONS: unclear syntax *<archivename>.a:
我无法找到一个非常具体的问题的明确答案,即使在阅读了几个手册页和指南之后也是如此。我正在为标题中提到的工具链编写 linker 脚本。在开发过程中,我将 link 一个静态库(已存档,.a)绑定到我的 RAM 中的某个位置。我可以 not 通过像处理常规 .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
...
请注意冒号语法。这将link所有liblpcspifilib
的内容作为一个块到Ram。然而,如果没有“:”,它不会 link 任何东西。即使在我找到解决问题的方法之后,我也找不到关于该行为的任何其他信息。
谁能给我解释一下?
由于某些原因很难在官方 GNU 文档中找到此信息,因此我认为它是某种扩展。 Here 第 50 页告诉我们:
You can also specify files within archives by writing a pattern
matching the archive, a colon, then the pattern matching the file,
with no whitespace around the colon.
‘archive:file’ matches file within archive
‘archive:’ matches the whole archive
‘:file’ matches file but not one in an archive
我无法找到一个非常具体的问题的明确答案,即使在阅读了几个手册页和指南之后也是如此。我正在为标题中提到的工具链编写 linker 脚本。在开发过程中,我将 link 一个静态库(已存档,.a)绑定到我的 RAM 中的某个位置。我可以 not 通过像处理常规 .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
...
请注意冒号语法。这将link所有liblpcspifilib
的内容作为一个块到Ram。然而,如果没有“:”,它不会 link 任何东西。即使在我找到解决问题的方法之后,我也找不到关于该行为的任何其他信息。
谁能给我解释一下?
由于某些原因很难在官方 GNU 文档中找到此信息,因此我认为它是某种扩展。 Here 第 50 页告诉我们:
You can also specify files within archives by writing a pattern matching the archive, a colon, then the pattern matching the file, with no whitespace around the colon.
‘archive:file’ matches file within archive ‘archive:’ matches the whole archive ‘:file’ matches file but not one in an archive