Firefly开源社区

打印 上一主题 下一主题

编译内核模块示例

432

积分

3

威望

0

贡献

技术达人

Rank: 2

积分
432

编译内核模块示例

发表于 2017-6-13 11:01:11      浏览:9953 | 回复:5        打印     [复制链接] 楼主
    编译内核的时候有两种方式,1:直接编译进内核 2:编译成单独的内核模块insmod。 在这里介绍下单独的内核模块的编译方式,以hello.c进行示范
废话不多说,直接上程序
1. hello.c
  1. #include <linux/init.h>
  2. #include <linux/module.h>
  3. #include <linux/kernel.h>

  4. static int __init hello_init(void)
  5. {
  6.         printk(KERN_ALERT "hello driver init \n");
  7.         return 0;
  8. }

  9. static void __exit hello_exit(void)
  10. {
  11.         printk(KERN_ALERT "hello driver exit \n");
  12. }

  13. module_init(hello_init);
  14. module_exit(hello_exit);
复制代码
2. Makefile
  1. PWD=$(shell pwd)
  2. KDIR:=/root/exe/firefly/firefly-rk3288-kernel
  3. obj-m:= hello.o

  4. all:
  5.         make ARCH=arm CROSS_COMPILE=/root/exe/firefly/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- -C $(KDIR) M=$(PWD) modules
复制代码




回复

使用道具 举报

432

积分

3

威望

0

贡献

技术达人

Rank: 2

积分
432
发表于 2017-6-13 11:05:52      沙发
编译完后将编译生成的hello.ko拷贝到开发板上insmod hello.ko执行即可。
注意:CROSS_COMPILE设置需要按照自己的交叉编译链路径设置,KDIR是内核的路径,照抄是不行的
回复

使用道具 举报

432

积分

3

威望

0

贡献

技术达人

Rank: 2

积分
432
发表于 2018-3-18 10:02:18      板凳
bingo 发表于 2018-2-27 10:02
大神好,同样的代码在ubuntu14.04上编译出错。
hello.c

你的错误提示已经出来了,如下所示:
include/linux/page-flags-layout.h:5:30: fatal error: generated/bounds.h: No such file or directory
我在百度上找到了如下的答案,希望可以帮到你
http://blog.chinaunix.net/uid-24919665-id-1630140.html
回复

使用道具 举报

432

积分

3

威望

0

贡献

技术达人

Rank: 2

积分
432
发表于 2018-3-18 10:02:41      地板
bingo 发表于 2018-2-27 10:02
大神好,同样的代码在ubuntu14.04上编译出错。
hello.c

你的错误提示已经出来了,如下所示:
include/linux/page-flags-layout.h:5:30: fatal error: generated/bounds.h: No such file or directory
我在百度上找到了如下的答案,希望可以帮到
http://blog.chinaunix.net/uid-24919665-id-1630140.html

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表