嵌入式系统上的C ++动态代码注入

时间:2014-01-09 12:53:24

标签: c++ c embedded dynamic-code

我正在寻找以下问题的解决方案:

  • 开发了一个在嵌入式设备上运行的C ++软件模块(不可能使用基于文件的函数“dlopen”来加载共享库),而模块运行时它应该可以通过动态程序代码进行扩展
  • 动态代码在PC系统上编写(接口函数的实现)和交叉编译(gcc),然后通过总线系统发送到嵌入式设备上运行的先前描述的软件模块
  • 嵌入式设备上的软件模块应将收到的动态程序代码保存在内存中,并应能调用其中的功能

如何解决这个问题?

我的第一种方法如下:

  • 交叉编译并将动态代码链接为PC端的共享库(ELF文件)
  • (传输后)ELF文件在内存中的嵌入式设备上可用
  • 重定位ELF文件 - >在这里,我目前完全不知道如何做到这一点!是否有免费的图书馆来执行这类任务?

我不知道我的ELF文件方法是否可行?如果是这样,我应该如何执行库重定位?

有没有更好/不同的方法来解决我的问题?

1 个答案:

答案 0 :(得分:2)

VxWorks can do exactly that。对象模块可以是部分链接的可重定位对象(GNU ld中的-r选项),然后在运行时加载到目标,在该目标链接完成时解析到目标上现有代码的链接。而不是共享库。 p>