Linux kernel Can';t使用buildroot编译模块
我需要用buildroot编译一个模块,这样我就可以使用QEMU+gdb调试它,而当前的指南不起作用。根据文档,我尝试了最基本的表单,但没有任何效果。也许我错过了什么,但我现在真的看不见了。我正在使用以下命令: 模块目录包含以下文件:Linux kernel Can';t使用buildroot编译模块,linux-kernel,qemu,buildroot,Linux Kernel,Qemu,Buildroot,我需要用buildroot编译一个模块,这样我就可以使用QEMU+gdb调试它,而当前的指南不起作用。根据文档,我尝试了最基本的表单,但没有任何效果。也许我错过了什么,但我现在真的看不见了。我正在使用以下命令: 模块目录包含以下文件: /home/xx/git/buildroot/package/kernel_module/ Config.in hello.c kernel_module.mk Makefile Config.in 1 config BR2_
/home/xx/git/buildroot/package/kernel_module/
Config.in
hello.c
kernel_module.mk
Makefile
Config.in
1 config BR2_PACKAGE_KERNEL_MODULE
2 bool "kernel_module"
3 depends on BR2_LINUX_KERNEL
kernel_module.mk
1 KERNEL_MODULE_SITE = $(KERNEL_MODULE_PKGDIR)
2 KERNEL_MODULE_SITE_METHOD = local
3 $(eval $(kernel-module))
4 $(eval $(generic-package))
生成文件
1 obj-m += hello.o
2 ccflags-y := -DDEBUG -g -std=gnu99 -Wno-declaration-after-statement
3
4 .PHONY: all clean
5
6 all:
7 $(MAKE) -C '$(LINUX_DIR)' M='$(PWD)' modules
8
9 clean:
10 $(MAKE) -C '$(LINUX_DIR)' M='$(PWD)' clean
你好,c
1 #include <linux/module.h>
2 #include <linux/kernel.h>
3
4 MODULE_LICENSE("GPL");
5
6 static int myinit(void)
7 {
8 printk(KERN_INFO "hello init\n");
9 return 0;
10 }
11
12 static void myexit(void)
13 {
14 printk(KERN_INFO "hello exit\n");
15 }
16
17 module_init(myinit)
18 module_exit(myexit)
1#包括
2#包括
3.
4模块许可证(“GPL”);
5.
6静态int myinit(void)
7 {
8 printk(KERN_INFO“hello init\n”);
9返回0;
10 }
11
12静态无效myexit(无效)
13 {
14 printk(KERN_INFO“hello exit”\n);
15 }
16
17模块_init(myinit)
18模块_出口(myexit)
我还编辑了packages/Config.in以包含模块路径。我试过其他的回答,但都不起作用
编辑:澄清一下,当我启动时,模块不会出现在任何地方
提前感谢您的帮助。问题不清楚是什么问题。模块没有生成吗?它是否显示在目标rootfs中?它不能加载吗?好的。我补充了一项澄清。该模块不会出现在目标rootfs中的任何位置。没有构建错误或任何引导我解决问题的东西。它甚至是构建的吗?是否有目录输出/构建/内核模块?当您运行
make kernel module
时,您得到了什么输出?模块没有生成,并且make kernel\u module
工作正常。有趣。谢谢。您当时没有在“make menuconfig”中选择它。