美文网首页
Linux Kernel Makefiles编译标志

Linux Kernel Makefiles编译标志

作者: 小田BSP | 来源:发表于2021-07-15 22:22 被阅读0次

    一、编译标志

    ccflags-y、asflags-y和ldflags-y的值分别对应编译、汇编和链接,这三个标志仅适用于分配它们的kbuild Makefile文件。

    以前使用EXTRA_CFLAGS, EXTRA_AFLAGS 和 EXTRA_LDFLAGS标志实现相同的行为。目前仍然支持这些标志,但其用法已被弃用。

    subdir-ccflags-y和subdir-asflags-y类似于ccflags-y和asflags-y,区别:subdir-变量对本目录和所有子目录都有效。

    CFLAGS_$@和AFLAGS_$@仅适用于当前kbuild makefile中的命令,为某个编译单独提供参数。例:

    CFLAGS_setup.o = -DUTS_MACHINE='"$(UTS_MACHINE)"'
    AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET)
    

    二、特殊规则

    定义特殊规则时,会使用两个变量:

    1、$(src):指向当前Makefile所在目录的相对路径,引用位于src树中的文件时,使用$(src)

    2、$(obj):指向保存目标的目录的相对路径,引用生成的文件时,使用$(obj)

    例:

    ## arch/arm64/boot/Makefile
    ## srctree表示当前代码所在目录的路径
    ## src表示当前Makefile所在目录的路径,即arch/arm64/boot/
    install:
            $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \    
            $(obj)/Image System.map "$(INSTALL_PATH)"
    

    参考:

    Documentation/kbuild/makefiles.txt

    相关文章

      网友评论

          本文标题:Linux Kernel Makefiles编译标志

          本文链接:https://www.haomeiwen.com/subject/crampltx.html