我知道如何做到这一点的唯一方法是将文件转换为具有单个字节/字符数组的 C 源文件,该数组包含十六进制资源文件的内容。
有没有更好或更简单的方法来做到这一点?
我知道如何做到这一点的唯一方法是将文件转换为具有单个字节/字符数组的 C 源文件,该数组包含十六进制资源文件的内容。
有没有更好或更简单的方法来做到这一点?
这是我在 gcc-arm 交叉编译器中使用的一个好技巧;通过汇编语言文件包括一个文件。在此示例中,它是public_key.pem
我包含的文件的内容。
公钥.s
.section ".rodata"
.globl pubkey
.type pubkey, STT_OBJECT
pubkey:
.incbin "public_key.pem"
.byte 0
.size pubkey, .-pubkey
对应的pubkey.h
#ifndef PUBKEY_H
#define PUBKEY_H
/*
* This is a binary blob, the public key in PEM format,
* brought in by pubkey.s
*/
extern const char pubkey[];
#endif // PUBKEY_H
现在 C 源代码可以包含pubkey.h
,pubkey.s
用 gcc 编译并将其链接到您的应用程序中,然后就可以了。sizeof(pubkey)
也有效。
您描述的方式是最好的/最简单的/最便携的。只需编写一个快速工具(或查找现有工具)即可为您生成 C 文件。并确保在执行此操作时正确使用const
(并且可能static
)关键字,否则您的程序将浪费大量内存。
不久前我需要这样的东西,我为此创建了一个工具。这是一个名为mkcres ( https://github.com/jahnf/mkcres )的 python 工具,我把它放在了 github 上。