使用 GCC 在可执行文件中嵌入资源
使用 GCC 开发 C/C 应用程序时,可以方便地将外部二进制数据直接嵌入到可执行文件中可执行文件。这消除了对单独资源文件的需求,从而简化了分发。
GCC 的嵌入功能
GCC 提供两种主要的资源嵌入方法:
使用ld:
使用 bin2c/bin2h实用程序:
示例ld
下面是使用 ld 的更详细示例:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { printf("Address of start: %p\n", &_binary_foo_bar_start); printf("Address of end: %p\n", &_binary_foo_bar_end); for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar(*p); } return 0; }
在此示例中,名为 foo.bar 的文件被转换为目标文件 (foo.bar.o)使用:
ld -r -b binary -o foo.bar.o foo.bar
链接器在构建可执行文件时包含 foo.bar.o,允许通过符号 _binary_foo_bar_start 和 _binary_foo_bar_end。
大小确定
要确定嵌入资源的大小,请使用:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
以上是如何将资源嵌入到我的 GCC 可执行文件中?的详细内容。更多信息请关注PHP中文网其他相关文章!