Embedded 如何将静态库链接到特定部分?
我正在为嵌入式平台编写代码。我需要与第三方SDK链接。但是,该SDK中的符号应该进入特定部分(而不是Embedded 如何将静态库链接到特定部分?,embedded,static-libraries,ld,esp8266,Embedded,Static Libraries,Ld,Esp8266,我正在为嵌入式平台编写代码。我需要与第三方SDK链接。但是,该SDK中的符号应该进入特定部分(而不是.text)。有可能吗 我为xtensa-lx106处理器使用基于GNU的工具链,并为ESP8266芯片构建。要做到这一点,您必须修改正在使用的链接器脚本 您可能会在链接最终二进制文件的行中的makefile中找到它。链接器脚本是通过-T选项传递的文件 一旦你有了这个,在文本编辑器中打开它并搜索部分指令。您可能会在其中找到一个名为.text的组,其中列出了应该进入最后一个文本段的所有部分 您只需将
.text
)。有可能吗
我为xtensa-lx106处理器使用基于GNU的工具链,并为ESP8266芯片构建。要做到这一点,您必须修改正在使用的链接器脚本 您可能会在链接最终二进制文件的行中的makefile中找到它。链接器脚本是通过
-T
选项传递的文件
一旦你有了这个,在文本编辑器中打开它并搜索部分
指令。您可能会在其中找到一个名为.text
的组,其中列出了应该进入最后一个文本段的所有部分
您只需将SDK的代码段名称添加到此列表中即可。如果SDK有多个带有公共前缀的部分(经常出现),甚至可以使用通配符
如果需要,可以使用.data
组和.bss
组执行相同的操作
在这些修改之后,您可以重新链接可执行文件,SDK库中的部分应该直接进入.text
和.data
组
如果愿意,还可以在链接器文件顶部的
内存声明中创建新组。这使您可以直接控制链接器将使用的确切地址。然后,您可以将SDK库部分直接重定向到已创建的新内存区域中,并且lib始终位于同一地址 如果你不提及你使用的是哪种系统和编译器,你怎么能期望任何人都能回答呢?@Lundin谢谢,编辑。