I have a folder structure as follows:
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
This changes my folder structure as follows:
root_dir
|__build/
|__Makefile
|__mod_init.c
|__mod_klm.ko
|__mod_klm.mod.o
|__mod_init.o
|__mod_klm.mod
......
But I want all this generated .o .ko .order .mod files in build/ ie.,
root_dir
|__build/
|__mod_klm.ko
|__mod_klm.mod.o
|__mod_init.o
|__mod_klm.mod
..........
|__Makefile
|__mod_init.c
I know this code is not enough to do that, but unable to figure out what else to add in the Makefile.
I already tried make .o files in separate folder in linux kernel compilation this. But getting the following errors.
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
Thanks in advance.