linux - 内核模块的 Makefile 将所有 .o .ko .order .mod 文件保存在 build/ 目录中
问题描述
我的文件夹结构如下:
root dir
|__build/
|__Makefile
|__mod_init.c
生成文件:
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
......
但我希望所有这些生成的 .o .ko .order .mod 文件都在 build/ 中,即
root_dir
|__build/
|__mod_klm.ko
|__mod_klm.mod.o
|__mod_init.o
|__mod_klm.mod
..........
|__Makefile
|__mod_init.c
我知道这段代码不足以做到这一点,但无法弄清楚要在 Makefile 中添加什么。
我已经尝试在 linux 内核编译的单独文件夹中制作 .o 文件。但得到以下错误。
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
提前致谢。
解决方案
推荐阅读
- api - 如何在颤动中进行字符串的api调用?
- r - 在数据框中删除字符串以进行分组
- python - 使用 pandas 转换 ID 后的表
- reactjs - 使用 .Net core 3.1 在我们的 React 应用程序中加载资源失败:net::ERR_HTTP2_PROTOCOL_ERROR
- python - 替换一系列数据帧中的值(int64)
- javascript - 访问大对象的属性以映射它们,但前提是它们在同一个 Parent 下并且具有相同的 name 属性并更改 name 属性
- flutter - 我们如何在颤振中使用依赖函数
- github - Github 应用程序转移到组织未显示“安装应用程序”等
- javascript - 如何在填充时允许猫鼬模式 Schema.Types.ObjectId 为空
- ios - 如何在 swift 中为 xib 使用自定义委托?