【发布时间】:2015-04-29 17:17:43
【问题描述】:
即使在阅读了几本手册页和指南之后,我也无法找到一个非常具体的问题的明确答案。我为标题中提到的工具链编写链接器脚本。在开发过程中,我试图将一个静态库(存档,.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。但是没有“:”它不会链接任何东西。即使在我找到了解决问题的方法之后,我也找不到有关该行为的任何其他信息。
谁能给我解释一下?
【问题讨论】:
-
感谢您的更正以及类似问题的链接。我同意这两种情况都会导致相同的解决方案,但是我的问题是以更笼统的方式提出的。不仅在闪存部分的开头放置库时,很可能会遇到类似的问题。另一个问题是关于特定任务的,我的问题集中在语法上。
-
我想澄清一下,当有人在寻找答案时,我正在考虑答案的可见性(“可搜索性”)。
标签: c gcc arm linker-scripts