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

How to store and retrieve data from linux binary file

本文关键字:存储 检索 数据 二进制文件 linux      更新时间:2023-10-16

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

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

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

到目前为止一切都好。

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

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

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

或者其他方法可以实现这一目标?

我想可以将其存储在二进制文件中的某个常量位置并从那里读取它,但真的不知道如何在不使二进制文件损坏的情况下做到这一点。

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

可以将版本存储在文本文件中,并在代码中#include该文件:

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

version.txt

"version string"

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

Ville 是正确的。

你现在正在倒退!

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

理想情况下,版本将从版本控制自主生成,但如果确实有必要,您可以在构建命令中指定它。

可以从二进制文件中提取一些字符串(如果有Windows等效项,请nm想想),但这实际上是相反的方法。