我的文件夹结构如下:
root dir
|__build/
|__Makefile
|__mod_init.c
Makefile:
obj-m += mod_klm.o
mod_klm-y := mod_init.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
这将如下更改我的文件夹结构:
root_dir
|__build/
|__Makefile
|__mod_init.c
|__mod_klm.ko
|__mod_klm.mod.o
|__mod_init.o
|__mod_klm.mod
......
但是我希望所有这些在build /即生成的.o .ko .order .mod文件中生成,>]
root_dir |__build/ |__mod_klm.ko |__mod_klm.mod.o |__mod_init.o |__mod_klm.mod .......... |__Makefile |__mod_init.c
我知道这段代码不足以做到这一点,但无法弄清楚在Makefile中还要添加什么。
我已经尝试过make .o files in separate folder in linux kernel compilation。但是出现以下错误。
make -C /lib/modules/5.5.15-200.fc31.x86_64/build M=/home/aninsen/projects/kspace/kmod_template/kspace modules make[1]: Entering directory '/usr/src/kernels/5.5.15-200.fc31.x86_64' make[2]: Entering directory '/home/aninsen/projects/kspace/kmod_template/kspace/build' CC [M] /home/aninsen/projects/kspace/kmod_template/kspace/mod_init.o In file included from /usr/src/kernels/5.5.15-200.fc31.x86_64/include/linux/types.h:6, from /usr/src/kernels/5.5.15-200.fc31.x86_64/include/linux/limits.h:6, from /usr/src/kernels/5.5.15-200.fc31.x86_64/include/linux/kernel.h:7, from /home/aninsen/projects/kspace/kmod_template/kspace/mod_init.c:1: /usr/src/kernels/5.5.15-200.fc31.x86_64/include/uapi/linux/types.h:5:10: fatal error: asm/types.h: No such file or directory 5 | #include <asm/types.h> | ^~~~~~~~~~~~~ compilation terminated. make[3]: *** [/usr/src/kernels/5.5.15-200.fc31.x86_64/scripts/Makefile.build:266: /home/aninsen/projects/kspace/kmod_template/kspace/mod_init.o] Error 1 make[2]: *** [/usr/src/kernels/5.5.15-200.fc31.x86_64/Makefile:1694: /home/aninsen/projects/kspace/kmod_template/kspace] Error 2 make[2]: Leaving directory '/home/aninsen/projects/kspace/kmod_template/kspace/build' make[1]: *** [Makefile:179: sub-make] Error 2 make[1]: Leaving directory '/usr/src/kernels/5.5.15-200.fc31.x86_64' make: *** [Makefile:25: all] Error 2
提前感谢。
我的文件夹结构如下:root dir | __build / | __Makefile | __mod_init.c Makefile:obj-m + = mod_klm.o mod_klm-y:= mod_init.o全部:make -C / lib / modules / $ (shell ...
此Makefile是树外Makefile。修改后的Makefile如下: