构建内核模块时是否可以提供输出文件夹? 这些问题与我的问题非常相似,但答案是非结论性的Link1,Link2(我已经测试了这些提案但没有成功)。
我有以下项目结构,并希望将内核模块编译的所有输出都放入 build 文件夹中。
Makefile
src/
-main.c
build/
这是我目前的Makefile:
# name of the module to be built
MODULE_NAME ?= test_module
BASE := .
# define all module sources
SRCS := \
src/main.c
# extract required object files
OBJ_SRCS := $(SRCS:.c=.o)
# define path to directories containing header files
INCLUDE_DIRS = \
-I$(src)/src
# Products from the 'make all' command should be placed in this folder
BUILD_DIR := $(BASE)/build
# ccflags to pass at compile time
ccflags-y := \
$(INCLUDE_DIRS)
# setup kbuild stuff
obj-m += $(MODULE_NAME).o
$(MODULE_NAME)-y := $(OBJ_SRCS)
$(MAKE) = make
KERNEL_DIR=/lib/modules/$(shell uname -r)/build
all:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean
我尝试添加O = $(BUILD_DIR)(如上面的链接中所述,但没有成功)。
$(MAKE) -C $(KERNEL_DIR) O=$(BUILD_DIR) M=$(PWD) modules
在编译内核模块时,是否可以确认是否可以重定向到输出(编译期间生成的文件)? (建议将不胜感激)
唯一的解决办法是将Makefile放在build文件夹中并更新Makefile中的所有路径吗?
谢谢!