objcopy命令介绍

今日在阅读uboot中关于显示开机logo的代码。图片以rle格式与uboot源码放在一起,如图片文件为my_test.rle

发现在往LCD framebuffer倒入数据时使用两个外部数组:

extern char const my_test_rle_start[];
extern char const my_test_rle__end[];

source insight 搜索一圈没发现以上两个数组的定义。于是查看图片文件所在目录下的makefile,发现有如下编译项:

 

OBJS    += my_test.o

my_test.o:
 $(OBJCOPY) -I binary -O elf32-littlearm -B arm my_test.rle $@

 

于是查阅关于OBJCOPY的东东,得到如下资料:

 

将图像编译到可执行文件内

Q: 如何将一个二进制文件,比如图片,词典一类的东西做为.o文件,直接链接到可执行文件内部呢?
A:
$ objcopy -I binary -O elf32-i386 -B i386 14_95_13.jpg image.o
$ gcc image.o tt.o -o tt
$ nm tt | grep 14_95
0805d6c7 D _binary_14_95_13_jpg_end
00014213 A _binary_14_95_13_jpg_size
080494b4 D _binary_14_95_13_jpg_start
 
再于是写了此文以便以后斟酌。

你可能感兴趣的:(objcopy命令介绍)