https://blog.csdn.net/yusiguyuan/article/details/11144941

 
  1. //刚下载的linux源代码,一个简单的hello驱动都没有编译通过

  2. //下面是驱动源代码

  3. #include <linux/init.h>

  4. #include <linux/module.h>

  5. static int hello_init(void)

  6. {

  7. printk(KERN_ALERT "Hello, Tekkaman Ninja !\n");

  8. return 0;

  9. }

  10. static void hello_exit(void)

  11. {

  12. printk(KERN_ALERT "Goodbye, Tekkaman Ninja !\n Love Linux !Love ARM ! Love KeKe !\n");

  13. }

  14. module_init(hello_init);

  15. module_exit(hello_exit);

  16. MODULE_LICENSE("Dual BSD/GPL");

下面是简单的makefile文件

 
  1. obj-m := hello.o

  2. KERNELDIR = /home/xduser/study/driver/src/linux-2.6.22

  3. PWD := $(shell pwd)

  4. default:

  5. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

但是却有错误

 
  1. make[1]: Entering directory `/home/xduser/study/driver/src/linux-2.6.22'

  2. ERROR: Kernel configuration is invalid.

  3. include/linux/autoconf.h or include/config/auto.conf are missing.

  4. Run 'make oldconfig && make prepare' on kernel src to fix it.

  5. WARNING: Symbol version dump /home/xduser/study/driver/src/linux-2.6.22'/Module.symvers

  6. is missing; modules will have no dependencies and modversions.

原因是内核没有编译,先处理内核

进入内核目录执行

1, make oldconfig

2, make prepare

3, make scripts

然后在执行make编译hello驱动即可

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐