如何扩展C程序中嵌入的文件资源

在GCC Linux上,有没有办法可以将文件资源静态地嵌入到C程序中,然后我如何将它从main()扩展到/ tmp?

解决方法:

您可以使用objcopy嵌入资源,然后使用普通文件操作在/ tmp中创建文件.

如果你编译这个程序:

#include <stdio.h>

extern char _binary_resource_bin_start, _binary_resource_bin_end;

int main() {
  FILE*out = fopen("/tmp/rsrc.bin","wb");
  fwrite(&_binary_resource_bin_start,
    &_binary_resource_bin_end - &_binary_resource_bin_start, 1, out);
  fclose(out);
}

使用这个makefile:

program: program.o resource.o
    $(CC) -o program program.o resource.o

resource.o: resource.bin
    objcopy -I binary -O elf32-i386 -B i386 resource.bin resource.o

resource.bin:
    echo resource-file-contents > resource.bin

我相信你会得到你想要的.

上一篇:膨胀与腐蚀


下一篇:python – numpy重复元素