嵌入式系统上的C ++动态代码注入
我正在寻找以下问题的解决方案:
- 开发了一个在嵌入式设备上运行的C ++软件模块(不可能使用基于文件的函数“dlopen”来加载共享库),而模块运行时它应该可以通过动态程序代码进行扩展
- 动态代码在PC系统上编写(接口函数的实现)和交叉编译(gcc),然后通过总线系统发送到在嵌入式设备上运行的先前描述的软件模块
- 嵌入式设备上的软件模块应将接收到的动态程序代码保存在存储器中,并且应该能够调用其中的function
我该如何解决这个问题?
我的第一种方法如下:
- 交叉编译并将动态代码链接为PC端的共享库(ELF文件)
- (传输后)ELF文件在内存中的嵌入式设备上可用
- 重新定位ELF文件 – >这里我目前完全不知道如何制作! 有免费的图书馆来执行这种任务吗?
我不知道我的ELF文件方法是否可行? 如果是这样,我应该如何执行库重定位?
有没有更好/不同的方法来解决我的问题?
VxWorks可以做到这一点 。 这样的对象模块可以是部分链接的可重定位对象(GNU ld中的-r选项),然后在运行时加载到目标,在该目标链接完成时解析到目标上现有代码的链接,而不是共享库。