使用objcopy实现将文件编译进执行程序

一、简介 

 工作中可能遇到将一个文件编译进执行程序的需求,例如bin文件、jpg文件等等。实现的方法可以使用脚本来将文件内容写入一个新的C源文件数组,达成编译进程序的目的。

 现在介绍一种简单、快捷的方法来实现需求,具体的操作如下文所述。

二、环境准备

 <file> 文件内容:

 This is a test.

 <test.c> 文件内容:

 1 #include <stdio.h>
 2 
 3 extern unsigned char _binary_file_start[]; 
 4 extern unsigned char _binary_file_end[]; 
 5 
 6 int main()
 7 {
 8     unsigned char *p = _binary_file_start;
 9     unsigned char *end = _binary_file_end;
10 
11     while(p != end)
12     {
13         printf("%c", *p++);
14     }
15 
16     return 0;
17 }

 三、操作指令

 将文件内容插入 <file.o>:

 objcopy -I binary -O elf64-x86-64 -B i386 file file.o

 编译源文件:

 gcc test.c file.o

 四、程序运行

# ./a.out
This is a test.

 大功告成,达到了预期的效果。

猜你喜欢

转载自www.cnblogs.com/GyForever1004/p/11852427.html
今日推荐