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

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

1) 所有的先决文件(both*.c and *.h)

2) 在所有先决文件中使用的CONFIG_选项

3) 编译目标中使用的命令行

因此,如果你改变了$(CC)的某个选项,那么所有相关的文件将会被重新编译。

--- 3.10 特殊规则

当kbuild机制没有提供必要的支持时,特殊规则就起作用了。一个典型的例子是在生成过程中生成的头文件。

另一个例子是与具体架构相关的Makefiles需要特殊规则来准备启动映像。

特殊规则的书写和正常的Make规则一样。

Kbuild不在Makefile所在的目录中执行,所以所有的特殊规则需要提供相对路径给先决文件和目标文件。

有两个用来定义特殊规则:

$(src)

$(src)是一个用来指向makfile所在目录的相对路径。必须使用$(src) 变量来引用src源码树中的文件。

$(obj)

$(obj)是一个用来指向目标文件保存位置的相对目录。必须使用$(obj)变量来引用生成的文件。

例子:

#drivers/scsi/Makefile

$(obj)/53c8xx_d.h: $(src)/53c7,8xx.scr$(src)/script_asm.pl

$(CPP)-DCHIP=810 - < $< | ... $(src)/script_asm.pl

这是一个遵循正常make语法的特殊规则。

目标文件依赖于两个先决文件。对目标文件的引用使用$(obj)作为前缀,而对先决文件的引用则使用$(src)(因为它们不是生成文件)。

--- 3.11 $(CC) 支持的函数

内核可以使用几个不同版本的$(CC)来编译,每个版本都支持一个唯一的特征和选项集合。Kbuild提供对$(CC)的无效选项的检查。$(CC)是通常的gcc编译器,但是其它的编译器也是可以的。

as-option

as-option用来检查$(CC)是否 – 当用来编译汇编(*.S)文件 – 支持给定的选项。当不支持第一个选项的时候,第二个可选选项可能会被指定。

例子:

#arch/sh/Makefile

cflags-y = $(callas-option,-Wa$(comma)-isa=$(isa-y),)

在上面的例子中,当支持$(CC)的时候,cflags-y将等于选项-Wa$(comma)-isa=$(isa-y)的。第二个参数是可选的,当不支持第一个选项,并且第二个选项有给出的时候,它就会被使用。

ld-option

ld-option用来在链接目标文件时检查是否支持给定的选项。当不支持第一个选项的时候,一个可选的第二选项可能会被支持。

例子:

#arch/i386/kernel/Makefile

vsyscall-flags = $(call ld-option,-Wl$(comma)--hash-style=sysv)

在上面的例子中,如果支持$(CC),那么vsyscall-flags就会被赋予-Wl$(comma)--hash-style=sysv选项的。第二个参数是可选的,当不支持第一个选项,并且第二个选项有给出的时候,它就会被使用。

as-instr

as-instr用来检查汇编器是否报告了一个特定的指令,然后输入选项1或者选项2。C测试指令支持C转义。

注意:as-instr-option使用KBUILD_AFLAGS作为$(AS)的选项。

cc-option

cc-option用来检查$(CC)是否支持一个给定的选项,而不是支持使用一个可选的第二选项。


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

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

    • 壮尼
      壮尼

      吗哦

    • 李玉琳
      李玉琳

      靠边站宋

    • 李淛
      李淛

      不行了不行了我受不了新表情的诱惑了还有四天我就升级

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