如何将静态库链接到特定部分?

时间:2015-07-08 12:07:33

标签: embedded static-libraries ld esp8266

我正在为嵌入式平台编写代码。我需要链接第三方SDK。但是,该SDK中的符号应该进入特定部分(而不是.text)。有可能吗?

我为xtensa-lx106处理器使用基于GNU的工具链,并为ESP8266芯片构建。

1 个答案:

答案 0 :(得分:3)

为此,您必须修改正在使用的链接描述文件。

您可能会在链接最终二进制文件的行中的makefile中找到它。链接描述文件是通过00021af0选项传递的文件。

完成后,在文本编辑器中打开它并搜索-T指令。您可能会在其中找到一个名为SECTION的组,其中列出了应该进入最终文本段的所有部分。

您只需将SDK的代码段名称添加到此列表即可。如果SDK有多个具有公共前缀的部分(发生了很多),你甚至可以使用通配符。

如果有必要,可以使用.text组和.data组进行同样的操作。

完成这些修改后,您可以重新链接您的可执行文件,SDK库中的部分应直接进入.bss.text组。

如果需要,还可以在链接器文件顶部的.data声明中创建新组。这使您可以直接控制链接器将使用的确切地址。然后,您可以将SDK库部分重定向到您已创建的新内存区域,并且您的库始终位于同一地址。