Uboot Makefile 分析
来源:互联网 发布:淘宝骗局 退款 礼品券 编辑:程序博客网 时间:2024/06/06 00:36
Uboot Makefile 分析
- Uboot Makefile 分析
- make smdk2410_config 执行过程
- make 编译过程
======
1. make smdk2410_config 执行过程
Makefile 目标内容:
smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
替换后
smdk2410_config : unconfig mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0
1. 执行 unconfig 依赖
unconfig: @rm -f include/config.h include/config.mk \ board/*/config.tmp board/*/*/config.tmp
删除生成的文件,如: config.h, config.mk config.tmp2. 执行脚本,生成头文件和链接配置
Parameters: Target Architecture CPU Board [VENDOR] [SOC] mkconfig smdk2410 arm arm920t smdk2410 NULL s3c24x0
将 mkconfig 脚本精简后,如下:```#!/bin/sh -e# Script to create header files and links to configure# U-Boot for a specific board.# Parameters: Target Architecture CPU Board [VENDOR] [SOC]BOARD_NAME="$1"echo "Configuring for ${BOARD_NAME} board..."## Create link to architecture specific headers#cd ./includerm -f asmln -s asm-$2 asmrm -f asm-$2/archln -s arch-$6 asm-$2/archrm -f asm-$2/procln -s proc-armv asm-$2/proc## Create include file for Make#echo "ARCH = $2" > config.mkecho "CPU = $3" >> config.mkecho "BOARD = $4" >> config.mkecho "SOC = $6" >> config.mk## Create board specific header file#> config.h # Create new config fileecho "/* Automatically generated - do not edit */" >>config.hecho "#include <configs/$1.h>" >>config.hexit 0``` mkconfig 脚本效果: 1. 在include目录下成链接文件 asm -> asm-arm asm-arm/arch -> arch-s3c24x0 asm-arm/proc -> proc-armv 2. 在 include 目录下生成 config.mk 和 config.h 文件 config.mk ``` ARCH = arm CPU = arm920t BOARD = smdk2410 SOC = s3c24x0 ``` config.h ``` #include <configs/smdk2410.h> ```
2. make 编译过程
make 默认目标为 all ```all: u-boot.srec u-boot.bin System.map ```all 目标依赖于 u-boot.srec, u-boot.bin, System.map1. 目标:u-boot.srec ``` u-boot.srec: u-boot $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ ``` 依赖于 u-boot 1. 目标 u-boot ``` u-boot: depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT) UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\ cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \ --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \ -Map u-boot.map -o u-boot ``` 依赖于 depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT) 1. 目标 depend 在 tools examples post post/cpu 目录下生成文件 .depend ,包含了各个目标的依赖 2. 目标 version 生成 include/version_autogenerated.h ,包含为 版本号 3. 目标 $(SUBDIRS) SUBDIRS = tools examples post post/cpu 进入各个目录执行make all 4. 目标 $(OBJS) OBJS = cpu/$(CPU)/start.o uboot 启动代码 5. 目标 $(LIBS) LIBS = lib_generic/libgeneric.a LIBS += board/$(BOARDDIR)/lib$(BOARD).a LIBS += cpu/$(CPU)/lib$(CPU).a LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a LIBS += lib_$(ARCH)/lib$(ARCH).a LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a \ fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a LIBS += net/libnet.a LIBS += disk/libdisk.a LIBS += rtc/librtc.a LIBS += dtt/libdtt.a LIBS += drivers/libdrivers.a LIBS += drivers/nand/libnand.a LIBS += drivers/nand_legacy/libnand_legacy.a LIBS += drivers/sk98lin/libsk98lin.a LIBS += post/libpost.a post/cpu/libcpu.a LIBS += common/libcommon.a 编译依赖的库 6. 目标 $(LDSCRIPT) 2. 目标: u-boot.bin u-boot.bin: $(obj)u-boot $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@3. 目标: System.map System.map: $(obj)u-boot @$(NM) $< | \ grep -v '\(compiled\)|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)|\(LASH[RL]DI\)' | \ sort > $(obj)System.map
0 0
- Uboot 之Makefile 分析
- Uboot的Makefile分析
- uboot之Makefile分析
- uboot makefile 分析 转
- uboot makefile 分析
- uboot Makefile 分析
- uboot makefile分析
- uboot makefile 分析 转
- Uboot 之Makefile 分析
- uboot-Makefile分析
- uboot之Makefile分析
- uboot的 MakeFile分析
- uboot之Makefile分析
- uboot Makefile源码分析
- Uboot 之Makefile 分析
- uboot makefile 分析 转
- uboot 学习 Makefile分析
- uboot makefile分析
- groovy 速学 - 02 - 数据类型与作用域
- Java中的五种同步辅助类
- 博弈论学习记录(一)
- Android 方法调用跟踪
- String类型与Date日期类型互相转换
- Uboot Makefile 分析
- 旅美归来说印象 -- 旅美散记之六
- int main和 void main
- JAVA IO:使用字符流读写数据
- 使用proguard混淆打包APK keystore的创建
- 【Python】如何在VBA中调用Python脚本
- Oracle实例与数据库
- 递归解决全排列生成算法
- C++ 栈和队列的介绍与使用