Chinaunix首页 | 论坛 | 博客
  • 博客访问: 724392
  • 博文数量: 124
  • 博客积分: 3156
  • 博客等级: 中校
  • 技术积分: 1584
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-02 10:29
文章分类

全部博文(124)

文章存档

2012年(3)

2011年(2)

2010年(61)

2009年(34)

2008年(24)

我的朋友

分类: LINUX

2008-11-06 10:05:47

#
# Makefile in uboot/lib_arm
#

include $(TOPDIR)/config.mk
# 包含进顶层目录的config.mk文件


LIB    = $(obj)lib$(ARCH).a
# 表明库文件路径,$(obj)在顶层目录里面的config.mk里定义,
# $(ARCH)在顶层目录里面的Makefile里面定义,一般为arm,ppc,i386等


SOBJS    = _ashldi3.o _ashrdi3.o _divsi3.o _modsi3.o _udivsi3.o _umodsi3.o
# 表明汇编生成的目标文件

COBJS    = armlinux.o board.o \
      cache.o div0.o
# 表明C代码生成的目标文件

SRCS     := $(SOBJS:.o=.S) $(COBJS:.o=.c)
# 字符串替换,把字符串$SOBJS与字符串$COBJS中所有以.o结尾的字符串替换成分别替换成以.S .c结尾
# 其格式为$(var:a=b)或者是${var:a=b}

OBJS    := $(addprefix $(obj),$(SOBJS) $(COBJS))
#   $(addprefix ;,;)
#
#    名称:加前缀函数——addprefix。
#    功能:把前缀;加到;中的每个单词后面。
#    返回:返回加过前缀的文件名序列。
#    示例:$(addprefix src/,foo bar)返回值是“src/foo src/bar”。

$(LIB):    $(obj).depend $(OBJS)
    $(AR) $(ARFLAGS) $@ $(OBJS)
# 生成目标文件为$(LIB),依赖的文件为$(obj)下的.depend与$(OBJS)文件
# 生成该目标文件所使用的命令为$(AR) $(ARFLAGS) $@ $(OBJS)
# AR    = $(CROSS_COMPILE)ar定义在config.mk文件里面
# ifneq (,$(findstring s,$(MAKEFLAGS)))
# ARFLAGS = cr
# else
# ARFLAGS = crv
# endif
# "$@"表示所有的目标的挨个值,"$<"表示了所有依赖目标的挨个值
# 这些奇怪的变量我们叫"自动化变量",
#########################################################################

# defines $(obj).depend target
include $(SRCTREE)/rules.mk
# 包含进源码目录树的rules.mk

sinclude $(obj).depend
# 包含进.depend文件
# 三、引用其它的Makefile
#
# 在Makefile使用include关键字可以把别的Makefile包含进来,这很像C语言的#include,被包含的文件会原模原样的放在当前文件的包含位置。include的语法#  是:
#
#    include ;
#
#    filename可以是当前操作系统Shell的文件模式(可以保含路径和通配符)
#
# 在include前面可以有一些空字符,但是绝不能是[Tab]键开始。include和;可以用一个或多个空格隔开。 举个例子,你有这样几个Makefile:a.mk、# b.mk、c.mk,还有一个文件叫foo.make,以及一个变量$(bar),其包含了 e.mk和f.mk,那么,下面的语句:
#
#    include foo.make *.mk $(bar)
#
#    等价于:
#    include foo.make a.mk b.mk c.mk e.mk f.mk
# make命令开始时,会找寻include所指出的其它Makefile,并把其内容安置在当前的位置。就好像C/C++的#include指令一样。如果文件都没有指定绝对路径或是
# 相对路径的话,make会在当前目录下首先寻找,如果当前目录下没有找到,那么,make还会在下面的几个目录下找:
#    1、如果make执行时,有“-I”或“--include-dir”参数,那么make就会在这个参数所指定的目录下去寻找。
#    2、如果目录/include(一般是:/usr/local/bin或/usr/include)存在的话,make也会去找。
# 如果有文件没有找到的话,make会生成一条警告信息,但不会马上出现致命错误。它会继续载入其它的文件,一旦完成makefile的读取, make会再重试这些没有找到,# 或是不能读取的文件,如果还是不行,make才会出现一条致命信息。如果你想让make不理那些无法读取的文件,而继续执行,你可以在include前加 一个减号“-”。  # 如:
#    -include ;
#    其表示,无论include过程中出现什么错误,都不要报错继续执行。和其它版本make兼容的相关命令是sinclude,其作用和这一个是一样的。
#########################################################################
阅读(838) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~