Cortex-M0设备的共享库

Cortex-M0设备的共享库,c,gcc,linker,arm,ld,C,Gcc,Linker,Arm,Ld,我想问一下,是否有人知道如何创建一个可以从两个项目中访问的共享库。这些项目是引导加载程序和应用程序,它们都位于同一个Cortex-M0芯片上,应该在ARM GCC和ARM MDK下编译和工作。这座图书馆相当大(大约70k)。语言是C 我使用extern声明,“symdefs”文件符号+地址(对于MDK)和提供列表:符号+地址(对于GCC)让链接器知道共享功能 主要问题是如何编译该共享库(我应该使用什么选项)以及如何指示链接器使用该库 也许有一个相关的文档可以为这些编译器创建和使用共享库(用于芯片

我想问一下,是否有人知道如何创建一个可以从两个项目中访问的共享库。这些项目是引导加载程序和应用程序,它们都位于同一个Cortex-M0芯片上,应该在ARM GCC和ARM MDK下编译和工作。这座图书馆相当大(大约70k)。语言是C

我使用
extern
声明,“symdefs”文件符号+地址(对于MDK)和提供列表:符号+地址(对于GCC)让链接器知道共享功能

主要问题是如何编译该共享库(我应该使用什么选项)以及如何指示链接器使用该库

也许有一个相关的文档可以为这些编译器创建和使用共享库(用于芯片应用程序,而不是桌面应用程序)


如果你能给我指出那份文件,我将不胜感激

编译方法与可执行文件的编译方法基本相同。但是,您应该在对象文件上调用archiver(
ar
),而不是链接器,以便将它们打包到库中。我理解您的问题,您希望引导加载程序和主应用程序都可以访问一些代码。名称共享库在多进程OSs中有一个相当严格的概念。也许检查一下。当您从引导加载程序转换到主应用程序时,您可能只需要清除库BSS并重新初始化静态数据。