You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改内核模块Makefile使make clean清理dirA目录下的目标文件?

问题描述

项目目录结构:

root
    dirA
    dirB

Makefile位于dirB,所有make命令均在此目录执行。执行make时,会在dirA和dirB下生成目标文件,但执行make clean仅清理dirB内的目标文件,dirA的目标文件会保留。需求是修改Makefile或调整clean命令(不可使用显式rm),以同时清理dirA下的目标文件。

当前Makefile内容:

DIRA_PATH=../dirA/

obj-m += a.o
en-objs := b.o \
    $(DIRA_PATH)/c.o \

ccflags-y := -I$(src)
ccflags-y += -I$(src)/$(DIRA_PATH)/

BUILD_KERNEL ?= $(shell uname -r)

all:
    $(MAKE) -C /lib/modules/$(BUILD_KERNEL)/build M=$(CURDIR) modules

clean:
    $(MAKE) -C /lib/modules/$(BUILD_KERNEL)/build M=$(CURDIR) clean
解决方案

利用内核模块构建系统的clean目标,扩展当前的clean规则,让它同时处理dirA目录的清理操作,无需使用显式rm命令。修改后的clean目标如下:

clean:
    $(MAKE) -C /lib/modules/$(BUILD_KERNEL)/build M=$(CURDIR) clean
    $(MAKE) -C /lib/modules/$(BUILD_KERNEL)/build M=$(DIRA_PATH) clean

原理说明

内核的make clean M=<路径>命令会自动清理指定路径下由内核构建系统生成的目标文件、.mod文件、.ko文件等产物。通过在clean目标中新增一行调用,指定M=$(DIRA_PATH),就能让内核构建系统同时清理dirA目录下的生成文件,完全符合“不可使用显式rm”的要求。

内容的提问来源于stack exchange,提问作者just_a_user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:55:15