岁虚山

行有不得,反求诸己

0%

环境准备

简介

Linux 内核模块的编译与普通的用户程序编译有所不同。内核模块程序的编译依赖于 Linux 内核本身的编译程序,因此,在进行内核模块的编译运行之前,需要保证所用的系统具备正确的编译器、模块工具和其他必要工具。

本系列内容主要在 Ububtu 22.04 (GNU/Linux 5.15.0-52-generic x86_64) 中编译运行,因此后续的内容皆是能够满足在该环境下成功使用。

查看内核编译环境

在查看 /lib/modules 文件夹是否具有内核模块的编译环境:

1
2
cd /lib/modules
ls

ls lib modules

如上图所示,/lib/modules 文件夹中存在两个目录(系统环境不同,也可存在多个或一个目录),此时,需要根据系统的内核版本,来选择对应的编译环境目录。

使用以下命令查看内核版本:

1
uname -r

运行结果如下:

uname -r

根据内核版本进相应的目录中(一般来讲,在 /lib/modules 中一定会存在于内核版本对应的目录,存在此目录已经能够确定所使用的系统具备编译内核模块的环境):

ls 5.15.0.52-generic

安装 GCC、GDB

在编译内核模块代码时,因为内核模块的代码开发是使用 C 语言进行开发,因此,需要安装 GCC 编译器。GCC 编译器的安装在 Ubuntu 系统中可使用如下命令来进行安装:

1
sudo apt-get install gcc

一般来讲,Ubuntu 本身自带 GCC ,无需自行安装。可通过

1
gcc --v

命令来查看系统中是否已经安装了 GCC 及其版本:

gcc-v

在后续可能会存在的调试过程中,需要使用 GDB 作为调试工具,因此,使用以下命令安装 GDB:

1
sudo apt-get install gdb

也可在安装前通过

1
gdb -v

来查看系统中是否已经安装了 GDB 及其版本:

gdb-v

安装 make 工具

可通过

1
sudo apt-get install make

命令安装 make 工具,若系统中已经安装了 make,则可通过

1
make -v

来查看 make 工具的版本:

make-v

至此,编译内核模块的环境已经准备完毕。

-------------本文结束 感谢阅读-------------
打赏一包辣条