# eel-kmodules **Repository Path**: kingdix10/eel-kmodules ## Basic Information - **Project Name**: eel-kmodules - **Description**: Linux驱动示例 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-12-03 - **Last Updated**: 2024-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 1. 简介 采用层级结构,每个目录为一个模块示例或下一级父目录,每个模块示例需要是单独的一个目录。 主`Makefile`为通用文件,所有子目录和模块示例的`Makefile`相同,内部包含主`Makefile`。如有特殊配置,在模块目录下新建`config.mk`并添加相关内容即可。 模块测试用的用户态程序需要新建`Makefile.app`和`app`文件夹。 新建模块时,只需要复制现有模块示例文件夹,新建或修改目录下的`.c`文件即可。 1. 模块文件夹按`-`命名,`kmodname`不能包含`-`。 2. 最终生成的ko名称为`.ko`,如`01-hello`目录下会生成`hello.ko`。 3. 源文件不能命名为`.c` # 2. 环境准备 kmodules可结合[eel项目](https://gitee.com/kingdix10/eel)进行交叉编译,也可编译host模块。 ## 2.1 编译host模块 使用`uname -a`查看使用的内核,选择执行如下一条即可。 ```shell # 适用常见的的Linux系统 apt install linux-headers-$(uname -r) # 适用PVE中的LXC或docker apt install pve-headers-$(uname -r) ``` ## 2.2 结合eel 需要首先在`eel`下编译kernel和modules。 ```shell make ARCH=arm64 kernel make ARCH=arm64 kl-modules ``` # 3. 编译 编译host模块直接在`kmodname`或子目录下执行`make`即可。 结合eel编译有两种方式: 1. 在当前目录或子目录下指定`ARCH`进行`make`,如`make ARCH=arm64`或`make ARCH=arm64 01-hello` 2. 在`eel`目录下,可以使用`make ARCH=arm64 kmodules`编译所有模块和用户程序,也可以使用类似`make ARCH=arm64 km-01-hello`的方法编译单个模块。