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

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

例子:

#arch/i386/boot/Makefile

subdir-:= compressed/

上面的等式告诉kbuild在执行"make clean"命令时,同时也需要进入子目录compressed/中执

行该命令。

存在一个叫做archclean的可选目标,用来支持生成最终启动映像的Makefiles的清除机制。

例子:

#arch/i386/Makefile

archclean:

$(Q)$(MAKE) $(clean)=arch/i386/boot

当执行"make clean"命令时,make会进入arch/i386/boot目录,并且像一般情况一样进行清

除。arch/i386/boot目录中的Makefile可以使用subdir-来跟踪到更深层次的目录中去。

注意1:arch/$(ARCH)/Makefile不能使用"subdir-",因为那个文件是包含在顶层makefile中,

而kbuild机制在那个时候还是不能工作的。

注意2:在执行"make clean"时,所有core-y, libs-y, drivers-y 和 net-y列表中的目录都将会被

访问。

=== 6具体架构的Makefiles

顶层Makefile在开始进入单个的目录之前会设置环境并且做一些准备工作。顶层makefile

中包含一些通用部分,而arch/$(ARCH)/Makefile包含为了表示架构而建立kbuild需要的东西。

arch/$(ARCH)/Makefile建立了一些变量以及定义了一些目标来做准备。

当kbuild执行时,将会执行下面这些步骤(不一定完全是):

1) 配置内核 => 产生 .config文件

2) 将内核版本号保存到include/linux/version.h文件中

3) 符号链接include/asm到include/asm-$(ARCH)

4) 更新目标的所有先决条件:-附加的先决条件在arch/$(ARCH)/Makefile中指定

5) 递归地进入init-*core* drivers-* net-* libs-*列表中的列出的所有目录,并且编译生成所有目标。

-上述变量的是在arch /$(ARCH)/ Makefile中扩充

6) 所有生成的目标将会被链接最后生成vmlinux文件,它位于目标树的根部。

7) 最终,特定于体系结构的那部分程序会做所有善后工作,并且生成最终的bootimage。

-建立boot记录

-准备initrd映像和类的东西

--- 6.1 设置用来调整生成架构的变量

LDFLAGS 通用 $(LD) 选项

用于所有调用连接器的标志。

经常指定就足够了。

例子:

#arch/s390/Makefile

LDFLAGS := -m elf_s390

注意:ldflags-y可以进一步定制该标志的使用。见3.7章。

LDFLAGS_MODULE $(LD)链接模块时的选项

LDFLAGS_MODULE用来指定$(LD)链接用于模块的.ko文件时的标志。

默认情况下“-r”是用于重定位输出。

LDFLAGS_vmlinux $(LD)链接vmlinux时的选项

当链接最终的vmlinux映像的时候,LDFLAGS_vmlinux指定传递给链接的附加标志。

LDFLAGS_vmlinux使用LDFLAGS_$@支持。

例子:

#arch/i386/Makefile


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

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

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