在GCC Linux上,有没有一种方法可以将文件资源添加到C程序中静态embedded,然后如何将它扩展到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
我相信你会得到你想要的。
只需将其存储为一个字符串(char *)即可。 如果它包含了空值,或者你不想用引号,反斜杠等等的转义函数,就用uuencode,hex或base64对它进行编码,然后把解码程序放到你的C程序中,或者在外部调用它。 只需使用常规文件操作即可将数据写入/ tmp文件。
也许你正试图隐藏你的PHP代码。 如果是这样,请记住从生成的可执行文件中检索PHP代码是微不足道的,甚至不需要运行后者。 如果隐藏/混淆是目标,那么您可能要考虑使用PHP编码器。