我即将为 Linux ubuntu 3.8.0-29-generic
编写我的第一个内核模块
我没有内核函数的 man 9 部分(例如 kmalloc、kfree ...)
我在 /usr/include
中也看不到一些函数定义,而是在 /usr/src/linux-headers-3.2.0-53/include/linux
中。在这种情况下,如何在我的代码中包含 header ?
我怀疑可能有类似 apt-get install kernel-devel
的东西可以一次性解决所有这些问题,但我找不到。
也非常感谢链接到对内核模块编写的良好介绍。谢谢。
最佳答案
如果要用3.8.0的内核,为什么会有3.2.0的header?您可以使用 3.8.0 下载额外的源代码树并编译新内核,而无需替换现有的 3.2.0。
无论如何,让我们在现有的 3.2.0 上工作。
首先确保系统运行的内核版本相同 作为您提到的标题目录。
使用以下命令检查您的系统内核版本:
$ uname -r
然后看到您获得了 3.2.0。这意味着当你包括 (#include) 内核头文件在你的程序中,它们将是那些 在
/usr/src/linux-headers-3.2.0-53/include/linux
中。其次,安装 man 第 9 节:为此,您需要下载内核源代码。从https://www.kernel.org/中选择你想要的版本并将其下载到您的主目录。在该源目录中执行:
$ sudo apt-get install xmlto
$制作mandocs
$ sudo make installmandocs
关于c - Linux内核函数和内核模块开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747205/