如何从Linux二进制文件存储和检索数据

时间:2019-05-21 10:07:42

标签: c++ linux windows

我正在使用arm-none-linux-gnueabi-g ++来编译将在嵌入式Linux设备上运行的c ++代码。

我正在Windows下使用arm-none-linux-gnueabi-g ++,并获得将在Linux机器上运行的二进制文件作为输出。

为了为嵌入式设备设置新的二进制文件,我需要使用二进制文件和更多设置文件创建一个存档文件(zip)。

到目前为止,一切正常。

我需要自动化该操作,以便将以二进制文件版本的名称自动创建存档文件。

当前,我们在代码中将版本保持为简单的常量std :: string变量。我们在打印诊断,日志记录等时使用该字符串。

如何从版本二进制文件中读取?

或者其他方法可以实现该目标吗?

我认为可能将其存储在二进制文件中某个恒定的位置并从那里读取它,但实际上不知道如何在不破坏二进制文件的情况下进行操作。

2 个答案:

答案 0 :(得分:3)

您正在自动创建文件,因此我假设您首先要对其进行编译,然后使用生成的二进制文件进行存档。

您可以将版本存储在文本文件中,然后在您的代码中#include存储该文件:

const std::string version = 
#include "version.txt"
;

version.txt中:

"version string"

制作存档时,您可以轻松地从文本文件中解析版本。

答案 1 :(得分:2)

Ville是正确的。

您当前正在倒退!

您的构建系统应向可执行文件提供版本,而不是相反。解决此问题后,您的构建系统可以为其他元素(例如ZIP文件名)提供相同版本。

理想情况下,将从版本控制中自动生成版本,但是如果确实需要,您可以在build命令中指定它。

可以从二进制文件中提取一些字符串(如果有Windows的话,可以考虑HEX_HOME,但这确实是相反的方法。