要轻松地将外部二进制数据嵌入到 GCC 编译的 C/C 应用程序中,请考虑以下方法:
利用 ld 的对象创建功能:
ld,链接器,提供将任何文件转换为对象的功能。要嵌入文件,请运行命令:
ld -r -b binary -o binary.o foo.bar # then link in binary.o
这将创建一个目标文件(“binary.o”),其中包含以下符号as:
例如,要访问使用此嵌入的简单文本文件的内容方法:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { // Print the contents of the embedded resource for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar( *p); } return 0; }
使用 Bin2c/Bin2h 实用程序:
这些实用程序将文件转换为字节数组。将生成的数组集成到您的代码中。
ld 对象创建示例:
以下是将资源合并到对象文件中的方法:
ld -r -b binary -o foo.bar.o foo.bar
生成的目标文件包含这些符号:
要访问代码中的嵌入资源:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
这提供了确定资源大小的替代方法。
以上是如何使用 GCC 将资源无缝嵌入到可执行文件中?的详细内容。更多信息请关注PHP中文网其他相关文章!