1 内核头文件,主要指的是, 在板卡上的系统上直接 ,编译驱动模块,而不是在虚拟机的内核源码中 去编译内核模块。
---------------------------------------------------------------------------------------------------------------------------
2 makefile 传参 ,指的是, 内核模块使用 makfile 定义的宏定义。
首先是 关于 在普通的makefile中添加宏定义
这里的 INC 也是 一个自己定义的 。
至于怎么包含头文件这里就不 深究了。
然后是在将 内核驱动与Makefile 关联的 宏定义;
网上的资料:
这里是可以追踪一下, KBUILD_CFLAGS_MODULE 的。
--------------------------------------------------------------------------------------------------------------
先来看我自己的测试。
c 文件是这样的。
12 #include <linux/module.h>
11 #include <linux/kernel.h>
10 static int __init helloworld_init(void)
9 {
8 ▎ printk(KERN_EMERG "helloworld_init\r\n");
7 ▎
6 #ifdef WANG
5 ▎ printk("this is DEF \n");
4 #endif
3 ▎ return 0;
2 }
1 static void __exit helloworld_exit(void)
14 {
1 ▎ printk(KERN_EMERG "helloworld_exit\r\n");
2 }
3
4 module_init(helloworld_init);
5 module_exit(helloworld_exit);
6 MODULE_LICENSE("GPL v2");
7 MODULE_AUTHOR("topeet");
~
然后是makefile 文件
export ARCH=arm64#设置平台架构
export CROSS_COMPILE=aarch64-linux-gnu-#交叉编译器前缀
KBUILD_CFLAGS_MODULE += -DWANG
obj-m += two.o
KDIR :=/home/topeet/source_code/rk356x_linux/kernel/ #内核源码所在虚拟机ubuntu的实际路径
PWD ?= $(shell pwd)
all:
▎ make -C $(KDIR) M=$(PWD) modules #make操作
clean:
▎ make -C $(KDIR) M=$(PWD) clean #make clean操作
编译+ insmode 结果。
可以看到已经有了打印。