【问题标题】:How to link static library into specific section?如何将静态库链接到特定部分?
【发布时间】:2015-09-26 08:03:12
【问题描述】:

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

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

【问题讨论】:

  • 如果您不提及您使用的系统和编译器,您如何期望任何人能够回答?
  • @Lundin 谢谢,已编辑。

标签: embedded static-libraries ld esp8266


【解决方案1】:

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

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

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

您可以将 SDK 的代码段名称添加到此列表中。如果 SDK 有多个具有公共前缀的部分(这种情况经常发生),您甚至可以使用通配符。

如果需要,可以使用.data 组和.bss 组来完成相同的操作。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多