android 内核 makefile -m,Linux Makefile modules

news/2024/11/28 7:32:42/

V550的makefile

ifneq ($(KERNELRELEASE),)

obj-$(CONFIG_XXX) := base/ resource/

else

CROSS_COMPILE ?= arm-eabi-

DEBUG ?= 0

all: android

android:

$(MAKE) -C $(KDIR) M=$(CURDIR) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) OS=android DEBUG=$(DEBUG) HW=1

clean:

$(MAKE) -C $(KDIR) M=$(CURDIR) HW=1 clean

.PHONY: all android

endif

首先分析一下 make -C

make -C 嵌套执行 makefile,相当于cd到subdir 然后再make

cd subdir && $(MAKE) 《--》 $(MAKE) -C subdir

然后分析一下 make M=

M是自己指定的一个参数 和make没有关系 在linux顶层makefile中:

# Use make M=dir or set the environment variable KBUILD_EXTMOD to specify the

# directory of external module to build. Setting M= takes precedence.

ifeq ("$(origin M)", "command line")

KBUILD_EXTMOD := $(M)

endif

接下来分析编译过程:

结合之前gpio driver模块编译的makefile(V550的makefile需要修改一下)

#######################

KERNEL_DIR := /home/zhang/work/linux-4.14.55

CURRENT_PATH = $(shell pwd)

obj-m = leddts_gpio_driver.o

build:kernelmodule

kernelmodule:

$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_PATH) modules

clean:

$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_PATH) clean

#######################

make -C /home/zhang/work/linux-4.14.55 M=当前路径 modules

然后就是跳转到/home/zhang/work/linux-4.14.55下的makefile 目标是modules

else # KBUILD_EXTMOD

modules: descend $(objtree)/Module.symvers

$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost

descend: $(build-dirs)         #build-dirs := $(KBUILD_EXTMOD)    KBUILD_EXTMOD := $(M)

$(build-dirs): prepare

$(Q)$(MAKE) $(build)=$@ single-build=$(single-build) need-builtin=1 need-modorder=1

==》 make -f scripts/Makefile.build obj=M指定的路径 single-build=$(single-build) need-builtin=1 need-modorder=1

其中:

scripts/Makefile.build 没有指定目标,所以使用默认目标__build

__build:

__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \

$(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \

$(subdir-ym) $(always)

@:

__build依赖于obj-m

# The filename Kbuild has precedence over Makefile

kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))     #src := $(obj)  obj=M指定的路径

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

include $(kbuild-file)

包含M指定的路径下的Makefile

M指定的路径下的Makefile  obj-m = leddts_gpio_driver.o

如果模块还包含子文件夹

比如随便找一个模块

obj-$(CONFIG_TEGRA_HOST1X) += host1x/

obj-y+= drm/ vga/

obj-$(CONFIG_IMX_IPUV3_CORE)+= ipu-v3/

目录下包含host1x等四个文件夹,host1x的makefile,用host1x-y表示host1x.o由哪些组成

host1x-y = \

bus.o \

。。。

obj-$(CONFIG_TEGRA_HOST1X) += host1x.o

原文:https://www.cnblogs.com/idyllcheung/p/13230714.html


http://www.ppmy.cn/news/409314.html

相关文章

黑客数字雨

代码 import random import pygame pygame.init() screenInfo pygame.display.Info() PANEL_width screenInfo.current_w PANEL_highly screenInfo.current_h FONT_PX 15 winSur pygame.display.set_mode((PANEL_width, PANEL_highly)) # 全屏模式 font pygame.font.Sys…

个人计算机组装零件,如何组装自己的一台私人电脑?选购配件很重要

前言: 鸟枪和大炮的区别在哪里?在制作工艺,制作材料和制作成本。这次我就亲身体验一下鸟枪换大炮以后感觉怎么样?对于电脑的电源来说一说模组平台就是想到的贵啊,买不起啊,动不动就是上千元的支出真心的消费…

地图加偏解释

根据国家的相关法规,在国内发行的民用地图产品不允许使用真实坐标,必须加入一定偏移(出于国家安全考虑)。用法律的形式对所有在民用发行的地图类产品加了强制性规范,要求所有地图类产品都必须使用国家测绘局的一种加偏…

首次定位时间TTFF的天花板是多少?教你如何计算TTFF理论值

常见的GPS 芯片/模块的冷启动首次定位时间TTFF(Time To First Fix)一般在40s左右,那么TTFF理论最短时间的“天花板”是多少? 某款GNSS多模芯片TTFF指标35s 要解答这个问题,首先需要我们来了解一下GPS 导航电文的结构…

使用思博伦卫星导航模拟器GSS7000方法

最近公司在技术研发上投入巨大,购买了一台卫星导航模拟器业内鼎鼎大名的GSS7000,正好借着学习使用的机会记录下使用方法。 1, 硬件连接 ↑如上图所示,首先使用射频同轴电缆线将GSS7000前面板的N 头RF out 接入被测物 (DUT) 的射频天线口。DUT通过USB线接入电脑输出NMEA信…

使用 RTKLIB 测试Ulbox F9P 解算RTK

整个测试的逻辑是: RTKLIB 获取F9P的GNSS原始观测量 千寻CROS站过来的差分RCTM改正信息,最后解算获得高精度定位。 结论:实测中发现RTKLIB 解算RTK算法相对与F9P自身的RTK 弱一点,在开阔环境下只能获得浮点解。 1,设…

卫星导航模拟器GSS7000测试NTRIP RTK--以Ublox F9P 为例.rtklib原始观测量解算固定解FIX

GSS7000 Ntrip 测试指南 Ntrip (Networked Transport of RTCM via Internet Protocol). (通过互联网进行RTCM网络传输的协议) 是在互联网上进行RTK数据传输的协议。 Ntrip是一个应用层协议,可以通过互联网将RTCM改正数据从参考站传输到流动站。最简单的理解NTRIP …

双节锂电升压充电芯片FP6291

FP6291 是一种电流模式(CC 模式)升压 DC-DC 转换器,其PWM 电路内置 0.2Ω MOSFET使这种转换器具有很好的功率效率,可以搭配 3.3uH小型贴片电感,减少成品体 积,0.6V 精准的参考电压和内部软启动功能可以减少…