1

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

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

我该如何解决这个问题?

我的第一种方法如下:

  • 在PC端交叉编译和链接动态代码作为共享库(ELF文件)
  • (传输后)ELF文件在内存中的嵌入式设备上可用
  • ELF 文件的重定位-> 在这里我目前完全不知道怎么做!有免费的图书馆来执行这种任务吗?

我不知道我的 ELF 文件方法是否可以工作?如果是这样,我应该如何执行图书馆搬迁?

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

4

1 回答 1

2

VxWorks 完全可以做到这一点。除了共享库本身,对象模块可以部分链接可重定位对象(GNU ld 中的 -r 选项),然后在运行时加载到完成链接的目标,解析到目标上现有代码的链接。

于 2014-01-09T13:55:48.543 回答