我正在寻找以下问题的解决方案:
- 开发了在嵌入式设备上运行的 C++ 软件模块(无法使用基于文件的函数“dlopen”来加载共享库),当模块运行时,它应可通过动态程序代码进行扩展
- 动态代码在PC系统上编写(接口功能的实现)和交叉编译(gcc),然后通过总线系统发送到前面描述的在嵌入式设备上运行的软件模块
- 嵌入式设备上的软件模块应将接收到的动态程序代码保存在内存中,并应能够调用其中的函数
我该如何解决这个问题?
我的第一个方法如下:
- 在PC端交叉编译并链接动态代码作为共享库(ELF文件)
- (传输后)ELF文件在嵌入式设备内存中可用
- ELF 文件的重新定位 -> 在这里,我目前完全不知道如何做到这一点!有免费的库可以执行此类任务吗?
不知道我的ELF文件方法能行吗?如果是这样,我应该如何执行库搬迁?
有没有更好/不同的方法来解决我的问题?
VxWorks 完全可以做到这一点。与共享库本身不同,对象模块可以部分链接可重定位对象(GNU ld 中的 -r 选项),然后在运行时加载到完成链接的目标,从而解析到目标上现有代码的链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)