设为首页 加入收藏

TOP

u-boot Makefile完全解读
2014-11-24 07:20:56 来源: 作者: 【 】 浏览:0
Tags:u-boot Makefile 完全 解读

编译u-boot的步骤:

#make XX_config XX表示某个cpu体系

#make 生成我们需要的u-boot.bin

具体可参考u-boot文件中的README。


1.设置版本

VERSION = 2010

PATCHLEVEL = 06

SUBLEVEL =

EXTRAVERSION = -rc1

ifneq "$(SUBLEVEL)" ""

U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

else

U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)

endif

TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h

VERSION_FILE = $(obj)include/version_autogenerated.h

以上定义了版本的变量U_BOOT_VERSION。



2.获取主机类型和主机系统

HOSTARCH := $(shell uname -m | \ 执行shell命令 uname -m 查看主机类型

sed -e s/i.86/i386/ \

-e s/sun4u/sparc64/ \

-e s/arm.*/arm/ \

-e s/sa110/arm/ \

-e s/ppc64/powerpc/ \

-e s/ppc/powerpc/ \

-e s/macppc/powerpc/)

sed -e命令进行替换,比如将i386替换成i.86,并将结果放入变量HOSTARCH 。



HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \

sed -e 's/\(cygwin\).*/cygwin/')

uname -s 查看主机操作系统,tr '[:upper:]' '[:lower:]'将所有大写变小写,然后假如有cygwin,替换成cygwin.*,并将结果放入变量HOSTOS



# Set shell to bash if possible, otherwise fall back to sh

SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \

else if [ -x /bin/bash ]; then echo /bin/bash; \

else echo sh; fi; fi)

选择/bin/bash



export HOSTARCH HOSTOS SHELL

导出变量HOSTARCH HOSTOS SHELL



LC_ALL=C

export LC_ALL



# Deal with colliding definitions from tcsh etc.

VENDOR=

变量为空

#########################################################################

# Allow for silent builds

ifeq (,$(findstring s,$(MAKEFLAGS)))

XECHO = echo

else

XECHO = :

endif



#########################################################################

#

# U-boot build supports producing a object files to the separate external

# directory. Two use cases are supported:

#

# 1) Add O= to the make command line

# 'make O=/tmp/build all'

#

# 2) Set environement variable BUILD_DIR to point to the desired location

# 'export BUILD_DIR=/tmp/build'

# 'make'

#

# The second approach can also be used with a MAKEALL script

# 'export BUILD_DIR=/tmp/build'

# './MAKEALL'

#

# Command line 'O=' setting overrides BUILD_DIR environent variable.

#

# When none of the above methods is used the local build is performed and

# the object files are placed in the source directory.

#

U-boot 生成一个目标文件来分开外面的文件夹,支持两种方式:

1)将 0= 加到make命令行如:

make 0=/tmp/build all

2) 通过设置全局环境变量BUILD_DIR如:

export BUILD_DIR=/tmp/build

make

第二种方式也可以用MAKEFILE脚本

export BUILD_DIR=/tmp/build

./MAKEALL

通过第一种方式会覆盖环境变量 BUILD_DIR

如果没有显式指定使用哪种方式,编译脚本会自动进行本地编译,目标文件被存放在当前文件夹里


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中List.remove报错Unsupporte.. 下一篇移植Wireless Extension

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)