linux内核之字符驱动

关于如何编译一个测试型的字符驱动程序,网上还是很多不错的教程http://blog.chinaunix.net/uid-11829250-id-337300.html,我主要是在man ioctl的时候才有自己编写一个字符驱动的想法,因为刚工作的时候就看到有同事在用ioctl,当时在网上搜了下ioctl也没怎么明白。现在才发现原来ioctl就是对应的设备驱动程序里的ioctl函数。写这篇文档的主要意义在于记录几个编写驱动程序遇到的问题,希望能对大家有所帮助,前车之鉴后车之师吧。

Q1:按照上面的教程码完了,编译提示头文件都找不到,什么鬼!

A1:  刚开始还以为是头文件包含路径不对,于是修改成绝对路径貌似还是没有解决。

        查看gcc/g++默认include路径的方法为:`gcc -print-prog-name=cc1plus` -v

        后来发现原来编译驱动程序最好参考其他驱动模块的Makefile文件,复制过来修改一下即可解决此问题。

Q2:按照1的解答修改好了,不过执行make的时候提示错误,错误原因是没有生成makefile的规则

A2:刚开始以为必须在linux源代码里的drivers文件夹下编写,心想这也太不人性化了吧,后来才发现原来驱动程序对应的makefile文件名字必须是"Makefile",修改下名字即可编译通过了。

最后想强调一下教程作者说的最后一段关于makefile的描述:自己编写的Makefile被调用两次,第一次调用的时候走的是else分支,找到linux/目录下的Makefile文件并执行modules规则,在此过程中会生成.o文件。由于指定了M选项所以中途会返回M所指定的路径查找并执行Makefile中的if分支。即两次进入自己编写的Makefile文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值