Linux编写内核模块编译时找不到头文件

土贼他哥土匪 2013-05-02 03:09:09
我在编译以下一个简单的内核模块时,
#include <linux/module.h> //所有模块都需要的头文件
#include <linux/init.h> // init&exit 相关宏
MODULE_LICENSE("GPL");
static int __init hello_init (void)
{
printk("Hello module init\n");
return 0;
}
static void __exit hello_exit (void)
{printk("Hello module exit\n");
}
module_init(hello_init);
module_exit(hello_exit);

用了gcc -D__KERNEL__ -DMODULE -DLINUX -I /usr/src/linux-headers-2.6.32-24/include h.c命令。

其中 /usr/src/linux-headers-2.6.32-24/include是我的内核源码include路径,h.c是源码文件。执行完后出现以下错误
In file included from /usr/src/linux-headers-2.6.32-24/include/linux/list.h:6,
from /usr/src/linux-headers-2.6.32-24/include/linux/module.h:9,
from h.c:1:
/usr/src/linux-headers-2.6.32-24/include/linux/prefetch.h:14:27: error: asm/processor.h: 没有那个文件或目录
/usr/src/linux-headers-2.6.32-24/include/linux/prefetch.h:15:23: error: asm/cache.h: 没有那个文件或目录
In file included from /usr/src/linux-headers-2.6.32-24/include/linux/module.h:9,
from h.c:1:
/usr/src/linux-headers-2.6.32-24/include/linux/list.h:7:24: error: asm/system.h: 没有那个文件或目录

底下还有一大堆,都是“asm/***.h: 没有那个文件或目录”这样的错误
我看了下,是我包含的那两个头文件里面包含了prefetch.h这个头文件,然后prefetch.h又包含了asm/processor.h等等。但是我去include里面找,能找到processor.h这个文件,但是不是在asm文件夹下面。也没有asm这个文件夹。这怎么回事?

我现在连这个最简单的内核模块都运行不起来,求各位高手指点下。
还是说我编译内核模块的方法不对?


...全文
2077 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
土贼他哥土匪 2013-05-27
  • 打赏
  • 举报
回复
额,谢谢各位!
Wenxy1 2013-05-07
  • 打赏
  • 举报
回复
For example: export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin #for Samsung s5pc100 export ARCH=arm export CROSS_COMPILE=arm-none-linux-gnueabi- make -C /home/wenxy/src/s5pc100/linux-2.6.35.5 M=$`pwd` modules
Wenxy1 2013-05-07
  • 打赏
  • 举报
回复
编译命令: export PATH=$PATH:编译工具链路径 export ARCH=CPU类别(例如arm) export CROSS_COMPILE=arm-none-linux-gnueabi-(编译工具xx-gcc的前缀xx) make -C 编译好的内核模块运行的Linux kernel内核源代码目录树 M=$`pwd` modules
Nuttx_Fan_now 2013-05-07
  • 打赏
  • 举报
回复
你编写的是linux内核模块 需要自己编写Makefile 同时在Makefile里面制定自己的内核路径 例如: CROSS_COMPILE=/opt/xxx(交叉编译工具链) 如果用GCC则CROSS_COMPILE=gcc- KERNELDIR :=/xx/yy(linux kernel路径) 注意linux内核需要编译过
Tom_殇子 2013-05-05
  • 打赏
  • 举报
回复
这样的问题只有自己慢慢去找原因…… 别人帮不了什么大忙!
土贼他哥土匪 2013-05-03
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
什么平台啊,装了内核开发包吗?
ubuntu,内核开发包怎么安装,我刚接触linux,不太懂这些
Panda_熊猫 2013-05-03
  • 打赏
  • 举报
回复
参考 ldd3 中的章节
Carl_CCC 2013-05-02
  • 打赏
  • 举报
回复
什么平台啊,装了内核开发包吗?

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧