linux内核宏

https://blog.csdn.net/clam_zxf/article/details/79467422 Linux驱动移植之makefile编译系统学习(一)
https://blog.csdn.net/haoel/article/details/2886 跟我一起写 Makefile

  1. linux
    来源
    而对于选择哪个defconfig是定义在device/qcom/msmXXX/AndroidBoard.mk里面
    build/core/tasks/kernel.mk 定义生成内核的规则Tips:
    config编译生成的中间文件放在out/target/product/xxxx/obj/KERNEL_OBJ/.config.
    如果添加驱动后.c没有编译到,可以到这文件里面确认相关config是否有配置成功。
    build/core/tasks/kernel.mk 定义生成内核的规则
    而$(CONFIG_XXXXX)的开关是在kernel/arm/arm64/config/msmxxx_defconfig里面定义的
    我们一个项目通常对应两个msmxxx_defconfig,一个是msmxxx_defconfig一个是msmxxx-perf_defconfig
    msmxxx_defconfig里面有很多debug开关是打开的,msmxxx-perf_defconfig是user版本默认的配置的,所以提 交配置两个文件通常都需要提交。
    build/core/tasks/kernel.mk

定义生成内核的规则
TARGET_AUTO_KDIR 自动设置的内核目录
TARGET_KERNEL_SOURCE 内核源码目录
默认 kernel// 一般在BoardConfig.mk里配置
KERNEL_SRC 内核源码目录
KERNEL_DEFCONFIG 编译内核用的配置文件
一般在BoardConfig.mk里配置
VARIANT_DEFCONFIG 变量配置
一般在BoardConfig.mk里配置
TARGET_KERNEL_SELINUX_CONFIG selinux配置
一般在BoardConfig.mk里配置
selinux配置
一般在BoardConfig.mk里配置
KERNEL_OUT#重点,生成的目标文件
KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ
示例: 目标文件的路径:out/target/product/i9100/obj/KERNEL_OBJ
我们生成的目标文件路径在:out/target/product/projectname/obj/KERNEL_OBJ;
在该目录下面有driver、framework等。
BOARD_USES_UBOOT 是否启用uboot
一般在BoardConfig.mk里配置
BOARD_USES_UNCOMPRESSED_BOOT 是否启用无压缩的boot
一般在BoardConfig.mk里配置
KERNEL_MODULES_INSTALL 内核模块的安装目录
KERNEL_MODULES_OUT 内核模块的的实际安装目录
KERNEL_MODULES_OUT := ( T A R G E T O U T ) / l i b / m o d u l e s o u t / t a r g e t / p r o d u c t / i 9100 / s y s t e m / l i b / m o d u l e s T A R G E T K E R N E L M O D U L E S i f e q ( (TARGET_OUT)/lib/modules out/target/product/i9100/system/lib/modules TARGET_KERNEL_MODULES ifeq ( (TARGETOUT)/lib/modulesout/target/product/i9100/system/lib/modulesTARGETKERNELMODULESifeq((TARGET_KERNEL_MODULES),)
TARGET_KERNEL_MODULES := no-external-modules
endif
Target: ( K E R N E L O U T ) 创 建 (KERNEL_OUT) 创建 (KERNELOUT)(KERNEL_OUT)目录
即目录out/target/product/i9100/obj/KERNEL_OBJ
Target: $(KERNEL_CONFIG)

Target: $(KERNEL_CONFIG) 生成编译内核源代码用的配置文件
$(KERNEL_CONFIG): $(KERNEL_OUT)
$(MAKE) $(MAKE_FLAGS) -C ( K E R N E L S R C ) O = (KERNEL_SRC) O= (KERNELSRC)O=(KERNEL_OUT) ARCH=$(TARGET_ARCH) ( A R M C R O S S C O M P I L E ) V A R I A N T D E F C O N F I G = (ARM_CROSS_COMPILE) VARIANT_DEFCONFIG= (ARMCROSSCOMPILE)VARIANTDEFCONFIG=(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG)
Target: $(KERNEL_OUT)/piggy

Target: $(KERNEL_OUT)/piggy 生成piggy内核
$(KERNEL_OUT)/piggy : $(TARGET_PREBUILT_INT_KERNEL)
$(hide) gunzip -c ( K E R N E L O U T ) / a r c h / (KERNEL_OUT)/arch/ (KERNELOUT)/arch/(TARGET_ARCH)/boot/compressed/piggy.gzip > $(KERNEL_OUT)/piggy
Target: $(TARGET_PREBUILT_INT_KERNEL) 安装模块,并清除先前不用的模块所在目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值