linux驱动开发的初级例子里 linux/module.h缺失问题

虽然这个问题在网上被提及很多次,不过依然没看到实际的解决办法。内核我重新编译过,不过可能因为没编译到关键模块,那具体关键要编译什么?我也试着把源文件里的头文件链接到/us... 虽然这个问题在网上被提及很多次,不过依然没看到实际的解决办法。内核我重新编译过,不过可能因为没编译到关键模块,那具体关键要编译什么? 我也试着把源文件里的头文件链接到/usr/include里,不过因为源文件结构的不一致有很多问题。所以到现在我还没找到解决办法,望有已经解决的朋友或高人来解惑 展开
 我来答
handsoul
2011-03-12 · TA获得超过955个赞
知道小有建树答主
回答量:500
采纳率:0%
帮助的人:755万
展开全部
驱动程序的头文件在/usr/src/[内核版本号]/include/ 这个目录下面....
比如我的机器里,这个目录是:/usr/src/linux-2.6.37-ARCH/
/usr/include/ 下并不是内核的头文件。。。链接上去会出问题的...

你说的这个文件,在我机器下的位置是:/usr/src/linux-2.6.37-ARCH/include/linux/module.h

需要安装kernel headers ,也就是内核开发的头文件。
不同的Linux版本的这个包名字可能略有不同,比如在我的机器上,名字叫kernel26-headers
我查询这个软件包的安装的详细文件,发现它就是向我上面提到的目录里面放上了很多头文件。

编译模块时,只要在makefile里面写明要编译的东西就好,make时这样写就可以了:
make -C /lib/modules/`uname -r`/build M=`pwd` modules
更多追问追答
追问
你好 谢谢你的回答。现在我的情况是这样的:因为默认头文件是/usr/include,里面没有module.h,/usr/src/linux-headers-`uname -r`/include  (1)这个文件夹我有,里面也有linux/module.h这个文件,我先只是想简单用gcc编译,就用-I选项把上面(1)路径包含,后又提示没有asm/processor.h这个文件,我按照提示发现跟linux同级目录没有asm文件夹,我不知道原因
追答
自己用gcc的话,头文件会毕竟麻烦...
用make 多方便...
用locate命令试试就晓得了..:
[ksl@myhost ~]$ locate 'asm/io.h'
/usr/src/linux-2.6.32-lts/arch/x86/include/asm/io.h
/usr/src/linux-2.6.37-ARCH/arch/x86/include/asm/io.h

应该是下面的那个,包含在内核头文件目录下的..
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式