开发 Ubuntu 设备驱动程序

开发 Ubuntu 设备驱动程序

我正在尝试根据《Linux 设备驱动程序》一书编写一个简单的设备驱动程序,但无法设置正确的包含路径。我正在使用一个简单的 make 脚本。操作系统是 Ubuntu 14.04 LTS,内核为 3.13.0-29-generic,安装在一台基于英特尔(奔腾 D(EMT/64 位)的旧 PC 上。我试过:

I/usr/src/include
-> 错误:找不到 module.h(应该有链接,但是却不存在)

I/usr/src/linux-headers-3.13.0-29-generic/include and copied .config from /boot/...
-> 工作了一段时间,但找不到 asm 包含

在上面的包含目录中,我找到了一个名为 asm-generic 的目录,因此我创建了一个链接asm -> asm-generic。继续工作一段时间,直到asm/Thread_info.h搜索到文件。
在硬件相关目录结构中找到了很多。在我通过设置更多链接弄乱整个系统之前,设置包含路径的正确方法是什么?

答案1

对于内核驱动程序,您应该包含路径/lib/modules/$(uname -r)/build/include。请勿使用/usr/src/include- 这是用户空间标头的路径。

请注意,“Linux 设备驱动程序”一书现已过时(约 10 年前),许多示例将无法编译。有一个 github 存储库,其中包含原始源代码,已对其进行修补,以便使用较新的内核进行编译,网址为https://github.com/martinezjavier/ldd3

相关内容