1、首先利用objcopy工具把二进制文件装到一个.o文件中
objcopy -I binary -O elf32-i386 --binary-architecture i386 data.txt data.o
可以看到这个.o之中包含了符号
$ nm data.o
0000001c D _binary_data_txt_end
0000001c A _binary_data_txt_size
00000000 D _binary_data_txt_start
_binary_data_txt_start是存放data.txt的起始位置,_binary_data_txt_size是data.txt文件大小
2、写一个c程序,在里面使用这些二进制资源
/* main.c */
#include
extern int _binary_data_txt_end;
extern int _binary_data_txt_size;
extern int _binary_data_txt_start;
int main(void)
{
int size = (int)&binary_data_txt_size;
char *data = (char *)&binary_data_txt_start;
char *end = (char *)&binary_data_txt_end;
printf("taille: %d\n", size);
printf("buffer: %s", data);
printf("start: 0x%p ; end: 0x%p\n",data,end);
return 0;
}
3、编译、链接
gcc -o test main.c data.o