Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何扩展嵌入在C程序中的文件资源_C_Linux_Gcc_Embedded Resource_Expand - Fatal编程技术网

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

如何扩展嵌入在C程序中的文件资源,c,linux,gcc,embedded-resource,expand,C,Linux,Gcc,Embedded Resource,Expand,在GCC Linux上,是否有一种方法可以添加一个静态嵌入C程序的文件资源,然后如何将其从main()扩展到/tmp?只需将其存储为字符串(char*)。如果它嵌入了空值,或者您不想为引号、反斜杠等的转义而烦恼,那么uuencode、hex或base64对其进行编码,并将解码例程放入C程序中或从外部调用它。只需使用常规文件操作将数据写入/tmp文件。您可以使用objcopy嵌入资源,然后使用常规文件操作在/tmp中创建文件 如果编译此程序: #include <stdio.h> e

在GCC Linux上,是否有一种方法可以添加一个静态嵌入C程序的文件资源,然后如何将其从main()扩展到/tmp?

只需将其存储为字符串(char*)。如果它嵌入了空值,或者您不想为引号、反斜杠等的转义而烦恼,那么uuencode、hex或base64对其进行编码,并将解码例程放入C程序中或从外部调用它。只需使用常规文件操作将数据写入/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);
}

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

也许你想隐藏你的PHP代码。如果是这样的话,请记住,从生成的可执行文件中检索PHP代码很简单,甚至不运行后者。如果隐藏/混淆是目标,那么你可能想考虑使用一个PHP编码器。

我试过这个:……它工作了!
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