Linux模块编译中缺少asm文件夹。

6

我正在尝试编译一个驱动程序。 我的内核版本是3.2.0-27-generic。

我只留下了我需要的内容:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/dmi.h>

这些头文件已经找到。但是在尝试编译时,会出现asm/cache.h文件未找到的错误。当我深入查找时,发现没有"asm"这样的文件夹,但是有asm-generic并且其中包含所需的头文件。
这是带有头文件的文件夹结构: 为什么它被重命名了?因为这样我就无法编译其他驱动程序。如果我将"asm-generic"重命名为"asm",那么就会导致其他缺失的头文件。这里有什么问题?
1个回答

4

asm/cache.h 是与架构相关的,不同的架构有不同的 asm 目录。

arch/powerpc/include/asm/
arch/x86/include/asm/
arch/arm/include/asm
[...]

您无法将include/asm-generic重命名为include/asm,因为您的问题是无法访问架构asm文件夹。请检查您的.config文件或手动设置ARCH变量。


啊,我懂了。我添加了新路径 /usr/src/linux-headers-3.2.0-27/arch/x86//include。它起作用了。我的架构是x86。但我得到了新的错误,就像这个 http://img6.imagebanana.com/img/vqfu6vpy/01375431072012_001.png。能否提供一些解决方法或建议?我什么都没做,只是包含了头文件。 - Tebe
你不需要包含任何东西,它应该自动工作。尝试查看这个例子[链接](http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html)。 - Federico

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接