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

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

LDFLAGS_vmlinux:= -e stext

OCOPYFLAGS objcopy标志

当使用$(callif_changed,objcopy)来转换一个.o文件时,OCOPYFLAGS中指定的标志就 会被使用。

$(callif_changed,objcopy)经常用来生成vmlinux中的原始二进制文件。

例子:

#arch/s390/Makefile

OCOPYFLAGS:= -O binary

#arch/s390/boot/Makefile

$(obj)/image:vmlinux FORCE

$(callif_changed,objcopy)

这个例子中,二进制文件 $(obj)/image是vmlinux得一个二进制版本。$(call if_changed,xxx)变量的使用将会在后面描述。

KBUILD_AFLAGS $(AS) 汇编器标志

默认 - 请看顶层Makfile文件

根据系统架构的要求进行追加或者修改。

例子:

#arch/sparc64/Makefile

KBUILD_AFLAGS= -m64 -mcpu=ultrasparc

KBUILD_CFLAGS $(CC) 编译器标志

默认 - 请看顶层Makfile文件

根据系统架构的要求进行追加或者修改。

大多数情况下,KBUILD_CFLAGS变量依赖于配置程序

例子:

#arch/i386/Makefile

cflags-$(CONFIG_M386)= -march=i386

KBUILD_CFLAGS= $(cflags-y)

许多体系相关的Makefiles会动态运行目标C编译器来探测支持的选项:

#arch/i386/Makefile

...

cflags-$(CONFIG_MPENTIUMII) = $(call cc-option,\

-march=pentium2,-march=i686)

...

#Disable unit-at-a-time mode ...

KBUILD_CFLAGS= $(call cc-option,-fno-unit-at-a-time)

...

第一个例子中使用了一个技巧,当一个配置选项被选择时,它的会被扩展到‘y’。

CFLAGS_KERNEL $(CC) 为编译进内核指定的选项

$(CFLAGS_KERNEL)包含额外的C编译器标志用来编译常驻内存的代码。

CFLAGS_MODULE $(CC) 为模块指定的选项

$(CFLAGS_MODULE)包含额外的C编译器标志用来编译可加载内核模块的代码。

--- 6.2 增加先决条件到archprepare

archprepare:这是一条用来列出先决条件的规则,这些先决条件是build进入子目录前 必须建立的。

这将从在包含汇编内容的头文件中使用。

例子:

#arch/arm/Makefile

archprepare: maketools

在这个例子中,在进入到子目录前目标文件maketools将会被处理。

想要知道kbuild怎么支持生成偏移头文件,请看XXX-TODO这一章。

--- 6.3 递归时列出需要访问的目录

一个体系相关的Makefile结合顶层Makefile定义了用来指定怎么编译vmlinux文件的变

量。注意没有给模块指定体系相关的区域;模块生成机制全是体系无关的。

head-y, init-y, core-y, libs-y, drivers-y,net-y


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

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

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