makefile 语法_makefile define用法_nis makefile 语法(12)

电脑杂谈  发布时间:2017-04-11 03:08:44  来源:网络整理

$(head-y)列出了首先要链接到vmlinux中的对象

$(libs-y)列出了lib.a归档文件可以被放置的目录。

剩下的列出了一个built-in.o对象文件可以被放置的目录。

$(init-y)对象将被放置在 $(head-y)后.

然后剩下的就按下面的顺序放置:

$(core-y),$(libs-y), $(drivers-y) and $(net-y).

顶层Makefile定义了所有通用目录的,arch/$(ARCH)/Makefile只添加了体系相关的目 录。

例子:

#arch/sparc64/Makefile

core-y= arch/sparc64/kernel/

libs-y= arch/sparc64/prom/ arch/sparc64/lib/

drivers-$(CONFIG_OPROFILE) = arch/sparc64/oprofile/

--- 6.4 与架构相关的启动映像

一个体系相关的Makefile指定了一系列目标,取出vmlinux文件,将它压缩到引导代码 中,然后复制生成的文件到某个地方。这个过程包含了许多安装命令。它的实际目的不 是标准化整个架构。

通常会将额外的处理程序放到arch/$(ARCH)/下的boot/目录中。

Kbuild没有提供任何有效的手段来支持编译boot/中指定的目标。因此应该手动调用 make arch/$(ARCH)/Makefile来生成boot/中的目标。

一种比较提倡的方法是在arch/$(ARCH)/Makefile中包含一个快捷方式,当进入到 arch/$(ARCH)/boot/Makefile文件中时再使用完整的路径。

例子:

#arch/i386/Makefile

boot:= arch/i386/boot

bzImage:vmlinux

$(Q)$(MAKE)$(build)=$(boot) $(boot)/$@

"$(Q)$(MAKE)$(build)=<dir>"是一种提倡的方法来激活子目录中的make。

没有任何规则用来命名体系相关的目标,但是执行"make help"命令将会列出所有相关的 目标。为了支持这个命令,必须先定义$(archhelp)。

例子:

#arch/i386/Makefile

definearchhelp

echo'* bzImage - Image(arch/$(ARCH)/boot/bzImage)'

endif

当不带任何参数执行make命令的时候,将会生成第一个遇到的目标。当前顶层Makefile 文件的第一个目标是all:。

默认情况下,每一个架构应该生成一个可引导映像。在"make help"中,默认目标使用一 个'*'来突出显示。向all:中添加一个新的先决条件:选择一个与vmlinux不同的默认目 标。

例子:

#arch/i386/Makefile

all:bzImage

当不带任何参数执行“make”命令时,bzImage将会被建立生成。

--- 6.5 建立非kbuild的目标

extra-y

extra-y指定在当前目录创建的额外目标,除了obj-*中指定的任何目标。

在下面两种情况下,将所有目标放在extra-y列表下是必要的:

1) 使能kbuild来检查命令行中的改变 – 当 $(callif_changed,xxx) 被使用

2) kbuild知道在执行"make clean"时哪些文件需要删除


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40628-12.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...