gpt4 book ai didi

c++ - Over-the-Air/Over-the-Wire 自动软件更新(热代码加载)策略

转载 作者:行者123 更新时间:2023-11-30 04:33:40 33 4
gpt4 key购买 nike

有一个 Linux 系统(作为我项目的一部分),我可能必须在其中进行热代码加载,即更新部分软件,无线(通过 WiFi 下载软件)或通过-有线(通过 LAN)。该软件有两部分,一部分用 C++ 编写,另一部分用 Erlang 编写。 C++ 部分通过 TCP/IP(一组 6-7 种奇怪的专有协议(protocol))与一些外部实体对话。我最需要进行热加载的部分是与那些外部实体对话的 C++ 部分。 C++ 部分通过端口与 Erlang 对话(目前正在开发中),但我想将其更改为 NIF(将来某个时候)。

有人可以建议一些 C++ 功能的热代码加载策略。我知道 Erlang 的能力,但我的理解是功能不会扩展到用 C++ 编写的部分。

此外,我需要确保包含专有协议(protocol)实现的 C++ 模块来自“有效来源”。正确的策略是什么?

我想,我的要求并不少见,所以如果存在这样的模块、框架、库,我们很乐意指出这些。

最佳答案

不知道任何现有的图书馆。在大多数情况下,C/C++ 中的代码加载是使用动态库完成的,您可以使用 dlopen 从代码中加载这些动态库。然后你可以使用 dlsym 找到符号的地址。请注意,C++ 会进行名称重整,这会使查找符号变得困难。通常最好创建包含在 extern "C"中的普通函数,为您创建对象,然后您可以像使用任何其他对象一样使用这些对象。

如果您想确定代码是否有效,您可能应该研究公钥/私钥密码学。您使用私钥对代码签名(基本上您创建了二进制的加密哈希),加载代码的软件使用公钥检查签名。

关于c++ - Over-the-Air/Over-the-Wire 自动软件更新(热代码加载)策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619804/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com