在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
我相信你会得到你想要的.