linux驱动开发的初级例子里 linux/module.h缺失问题
虽然这个问题在网上被提及很多次,不过依然没看到实际的解决办法。内核我重新编译过,不过可能因为没编译到关键模块,那具体关键要编译什么?我也试着把源文件里的头文件链接到/us...
虽然这个问题在网上被提及很多次,不过依然没看到实际的解决办法。内核我重新编译过,不过可能因为没编译到关键模块,那具体关键要编译什么? 我也试着把源文件里的头文件链接到/usr/include里,不过因为源文件结构的不一致有很多问题。所以到现在我还没找到解决办法,望有已经解决的朋友或高人来解惑
展开
展开全部
驱动程序的头文件在/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/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
应该是下面的那个,包含在内核头文件目录下的..
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询