【发布时间】:2011-08-02 21:56:56
【问题描述】:
我正在开发一个基于 arm9 处理器的项目。我们只使用裸机,没有任何操作系统,所以很遗憾我们还不支持共享库/动态加载器。
我希望能够从例如 SD 卡加载库,它也可以从主应用程序调用函数。
我的第一次尝试是使用链接器覆盖功能(将库放置在特定的绝对定位部分),但是正如我之前提到的那样,调用主应用程序函数存在问题 -> 每次更改主应用程序时,库都必须重新编译才能回调。
根据这一点,我将不得不编写自己的动态加载器,但我是这方面的新手。请有人给我任何例子如何处理它或如何开始这样的项目?我们正在使用 gcc 作为 arm-elf 目标。
问候 一月
【问题讨论】:
-
通常,如果一个“库”回调到一个“程序”中,它会通过调用一个函数指针来实现,该指针已在之前的库调用中传递。这样库不依赖于程序的修订。至于使程序“更少”依赖于库的确切构建,跳转表会很简单。
标签: shared-libraries arm dynamic-data relocation bare-metal