编译内核模块时设置输出路径?

时间:2016-05-19 12:45:44

标签: linux makefile linux-kernel kernel-module makefile-project

构建内核模块时是否可以提供输出文件夹? 这些问题与我的问题非常相似,但答案是非结论性的Link1Link2(我已经测试了这些提案但没有成功)。

我有以下项目结构,并希望将内核模块编译的所有输出都放入 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中的所有路径吗?

谢谢!

0 个答案:

没有答案