无线/无线自动软件更新(热代码加载)策略
Over-the-Air / Over-the-Wire automated Software Update (hot-code-loading) strategy
有一个Linux系统(作为我项目的一部分),我可能不得不做热代码加载,即更新部分软件,通过无线(例如通过WiFi下载软件)或有线(通过局域网)。本软件分为两部分,一部分用c++编写,另一部分用Erlang编写。c++部分通过TCP/IP(一组6-7个奇怪的专有协议)与一些外部实体进行通信。我最需要做热加载的部分,是与那些外部实体对话的c++部分。c++部分通过端口与Erlang对话(目前正在开发中),但我希望将其更改为nif(将来某个时候)。
谁能建议一些c++功能的热代码加载策略?我知道Erlang的能力,但我的理解是,功能没有扩展到用c++编写的部分。
另外,我需要确保包含专有协议实现的c++模块来自"有效源"。什么才是正确的策略呢?
我想,我的需求并不罕见,所以如果这样的模块,框架,库存在,我会很高兴被指向那些。
我不知道有什么现成的库。在大多数情况下,C/c++中的代码加载是使用动态库完成的,您可以使用dlopen从代码中加载动态库。然后可以使用dlsym找到符号的地址。注意c++的名称混淆会使查找符号变得困难。通常最好是创建用外部"C"封装的普通函数,这些函数为您创建对象,然后您可以像使用任何其他对象一样使用这些对象。
如果您想确定代码是有效的,您可能应该查看公钥/私钥加密。您使用私钥对代码进行签名(基本上是创建二进制文件的加密散列),然后加载代码的软件使用公钥检查签名。
相关文章:
- 无法使用犰狳运行编译的 cpp 代码,因为 dyld:库未加载
- jvm.dll 上的加载库失败,错误代码为 183
- 从二进制文件加载列表后,我的代码似乎进入了无限循环
- 有时加载库会失败,错误代码为 126
- Excel 2016 VSTO 加载项与本机代码 DLL
- 如果应用程序从安装选项启动,则加载库失败,错误代码为 126
- 在快速代码中加载静态库
- 尝试从资源加载位图返回NULL,错误代码为1813
- 如何从ifstream加载LLVM比特代码文件
- 应由库或客户端代码删除已加载库中的对象实例
- 将 PNG 加载代码转换为使用 FILE 而不是本地资源
- SSE 向量的对齐和未对齐加载和存储 - 如何减少代码重复
- 用于动态重新加载/usr/share/zoneinfo数据库的库/代码
- 在win32加载程序之前执行代码
- 以下代码是如何工作的(从DLL加载动态类)
- 使用cpp代码从加载的qml访问qml对象
- 加载/卸载时由共享库执行的代码
- 我的glsl着色器加载代码有什么问题吗
- 仅使用 DLL *.h 头文件构建(compile.link)应用程序代码,并在运行时加载 DLL 实现(显式链接)
- 无线/无线自动软件更新(热代码加载)策略