设置完这些基本上就ok了。

首先我们要编译的一种是可动态加载的内核驱动。

去到 goldfish/drivers 文件夹创建一个文件夹。就叫helloworld吧。不过其实对于这种动态加载的内核驱动,不一定需要在这个drivers文件夹下面,因为最后只要得到那个ko模块就好了。

在这个文件夹里面,我们创建了Makefile和hello.c文件。

Hello.c文件内容如下。

#include 

#include 

MODULE_LICENSE("GPL");

MODULE_AUTHOR("Xudong Shao 2018");

MODULE_DESCRIPTION("Hello World Kernel Module for Android");

static int hello_init(void)

{

printk("Hello Kernel World....\n");

return 0;

}

static void hello_exit(void)

{

printk("Goodbye Kernel World\n");

}

module_init(hello_init);

module_exit(hello_exit);

Makefile文件内容如下。

obj-m   := hello.o

KERNEL_DIR = ~/Documents/kernel/goldfish

all:

make -C $(KERNEL_DIR) M=$(PWD)/ ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules

然后在helloworld文件夹里面执行make就可以了。你可以看到那里出现了”hello.ko”文件。开启你的模拟器,将hello.ko 给push到/data/local/tmp下面,采用如下命令加载写在驱动就可以看到输入和输出了。

ae28e65a050ce91b7314111527015ccd.png

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐