在 Linux 操作系统之中,能够直接对 Linux 驱动予以编译,然而,这需要达成若干条件。
- 内核头文件与构建工具:编译驱动需要当前运行内核的头文件以及构建工具(诸如 make、gcc 等等);
- 内核源码(可选):倘若驱动依赖于内核源码里的特定文件,抑或您需要对内核源码进行修改,那么就需要下载完整的内核源码。
内核头文件方式:
- 内核头文件
内核头文件涵盖了编译驱动所必需的内核 API 以及数据结构。于大多数 Linux 发行版当中,内核头文件能够借助包管理器予以安装。例如,在基于 Debian 的系统(像是 Ubuntu)里,可以运行如下命令来安装内核头文件:
sudo apt update
sudo apt install linux-headers-$(uname -r)
安装完毕之后,头文件通常处于 /usr/src/linux-headers-$(uname -r) 目录之下。uname -r 乃是一个在类 Unix 系统(涵盖 Linux、macOS 等等)当中常用的命令,接下来为您详尽阐释其含义与作用:
命令组成与含义
uname :此为一个系统调用以及命令行工具,用于展示当前操作系统的相关信息。uname 命令能够呈现多种系统信息,例如内核名称、网络节点主机名、内核版本等等。
-r :这是 uname 命令的一个选项,其作用在于指定 uname 命令仅输出当前系统所运行的内核版本号。 - 构建工具
编译驱动需要 make、gcc 等工具。能够通过包管理器进行安装:
sudo apt install build-essential
完整内核源码(可选):
倘若您的驱动需要访问内核源码中的特定文件,或者您需要对内核源码予以修改,那么就需要下载完整的内核源码。能够通过以下方式获取内核源码:
- 从发行版的包管理器安装
sudo apt install linux-source
源码通常会被解压至 /usr/src/linux-source-* 目录。 - 使用 Git 克隆官方内核仓库
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git