zoukankan      html  css  js  c++  java
  • 【linux】内核make编译链接相关变量定义

    欢迎转载,转载时请保留作者信息,谢谢。

    邮箱:tangzhongp@163.com

    博客园地址:http://www.cnblogs.com/embedded-tzp

    Csdn博客地址:http://blog.csdn.net/xiayulewa

    这些定义很重要,不阅读源代码是体会不到的,在阅读源代码时,看看这些定义,会事半功倍。

    链接文件:

    export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds

     

    PAGE_OFFSET:srcarcharmincludeasmmemory.h : 内核地址空间 = CONFIG_PAGE_OFFSET, 3G – 4G
    
    TEXT_OFFSET:srcarcharmMakefile : 内核空间中内核代码真正开始的地方 一般为0XC0008000 =  3G + 0X8000
    

    %.ko: prepare scripts FORCE:src/Makefile 定义模块编译

    %/: prepare scripts FORCE:src/Makefile如何循环进入底层目录。

    srcscriptsKbuild.include: 中定义了 build 变量 build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

    srcscriptsMakefile.build: 编译时采用的Makefile

    srcscriptsKbuild.include中定义了if_changed_rule

    kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))

    kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)

    include $(kbuild-file)

    上面颜色字体决定了进入具体目录的执行。

    链接顺序:

    src/Makefile:

    export KBUILD_VMLINUX_INIT := $(head-y) $(init-y)

    export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y) $(drivers-y) $(net-y)

    其中Makefile 中的变量export 能被子Makefile继承。

  • 相关阅读:
    SpringBoot 拦截器
    SpringBoot学习笔记1
    mysql学习1
    mybatis运行原理学习
    js学习2
    设计原则
    mybatis学习1
    spring mvc
    Jenkins流水线部署maven不同模块服务到不同服务器运行
    L2Dwidget让自己的vue项目骚起来
  • 原文地址:https://www.cnblogs.com/embedded-tzp/p/4444452.html
Copyright © 2011-2022 走看看