每次我们重新编译u-boot的时候,运行起来总会看到以下信息:、
U-Boot 2009.08 (Feb 16 2011 - 10:29:10)
DRAM: 64 MB
Flash: 0 kB
NAND: 64 MiB
In: serial
Out: serial
Err: serial
dm9000 i/o: 0x18000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
Net: dm9000
Hit any key to stop autoboot: 3
红色这行给我们的提示:u-boot的版本,编译时间。
这样每次我们启动程序都可以看到编译时间,对于软件管理有很大的帮助,我就提取了这个技巧。
u-boot目录下的Makefile有以下这几行:
第24行:
VERSION = 2009
PATCHLEVEL = 08
SUBLEVEL =
EXTRAVERSION =
ifneq "$(SUBLEVEL)" ""
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
else
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif
第378行:
TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h
VERSION_FILE = $(obj)include/version_autogenerated.h
$(VERSION_FILE):
@( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
'$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ) > $@.tmp
@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
$(TIMESTAMP_FILE):
@date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
@date +'#define U_BOOT_TIME "%T"' >> $@
linux内核Makefile也有同样的功能,我提取了提示编译者和编译主机。整合之后就是以下的:
VERSION = 2011
PATCHLEVEL = 12
SUBLEVEL =
EXTRAVERSION = -rc1
ifneq "$(SUBLEVEL)" ""
ATE_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
else
ATE_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif
VERSION_FILE = version.h //全部都放在version.h头文件
all: $(VERSION_FILE) ate //必须放在被调用的文件之前生成,这里ate是最后要生成的文件,包含了version.h,所以必须放在后面。
$(VERSION_FILE): //生成这个文件,
@(printf '#define ATE_VERSION "ATE-GXV31XX %s "\n' "$(ATE_VERSION)") > $@
@date +'#define ATE_DATE "%b %d %C%y"' >> $@
@date +'#define ATE_TIME "%T"' >> $@
@echo \#define ATE_COMPILE_BY \"`whoami`\" >> $@
@echo \#define ATE_COMPILE_HOST \"`hostname`\" >> $@
clean:
rm -f *.o ate
rm -f $(VERSION_FILE)
实例中应包括:
#include "version.h"
const char version_string[] =
ATE_VERSION " " ATE_COMPILE_BY "@" ATE_COMPILE_HOST" (" ATE_DATE " - " ATE_TIME ")";
printf("\n\n***********************************************************\n");
printf ("\n\n\n%s\n\n\n", version_string);
printf("\n***********************************************************\n\n");
一点点小技巧
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)