linux设备驱动例子snull编译出错 求助
编译命令和错误显示如下
gcc -c snull.c -DMODUOLE -D__KERNEL__ -I/usr/src/linux-2.4.20-8/include -g -o snull.o
snull.c:21:31: linux/moduleparam.h: No such file or directory
In file included from snull.c:40:
/usr/src/linux-2.4.20-8/include/asm/checksum.h: In function `csum_and_copy_to_user':
/usr/src/linux-2.4.20-8/include/asm/checksum.h:186: `VERIFY_WRITE' undeclared (first use in this function)
/usr/src/linux-2.4.20-8/include/asm/checksum.h:186: (Each undeclared identifier
is reported only once
/usr/src/linux-2.4.20-8/include/asm/checksum.h:186: for each function it appears in.)
snull.c: At top level:
snull.c:50: parse error before "int"
snull.c:50: warning: data definition has no type or storage class
snull.c:53: parse error before "int"
snull.c:53: warning: data definition has no type or storage class
snull.c:59: parse error before "int"
snull.c:59: warning: data definition has no type or storage class
snull.c:73: parse error before "int"
snull.c:73: warning: data definition has no type or storage class
snull.c: In function `snull_setup_pool':
snull.c:100: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_teardown_pool':
snull.c:119: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_get_tx_buffer':
snull.c:134: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_release_buffer':
snull.c:153: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_enqueue_buf':
snull.c:166: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_dequeue_buf':
snull.c:176: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_rx_ints':
snull.c:193: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_rx':
snull.c:256: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_poll':
snull.c:291: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_regular_interrupt':
snull.c:351: warning: assignment makes pointer from integer without a cast
snull.c: In function `snull_napi_interrupt':
snull.c:398: warning: assignment makes pointer from integer without a cast
snull.c: In function `snull_hw_tx':
snull.c:482: warning: assignment makes pointer from integer without a cast
snull.c:492: warning: assignment makes pointer from integer without a cast
snull.c: In function `snull_tx':
snull.c:513: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_tx_timeout':
snull.c:539: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_stats':
snull.c:567: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_change_mtu':
snull.c:611: warning: initialization makes pointer from integer without a cast
snull.c: In function `snull_init':
snull.c:671: warning: assignment makes pointer from integer without a cast
snull.c: In function `snull_init_module':
snull.c:715: warning: assignment makes pointer from integer without a cast
snull.c:717: warning: assignment makes pointer from integer without a cast
------------------------------------------------------------------------------------------------------
有跟我一样错误的么???怎么解决呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
-DMODULE是笔误阿
呵呵 ,见笑了
我下这个例子的时候下成2.6的了 但我的内核版本是2。4。20-8呵呵
以前也编过helloworld之类的 ,尝试过好几个2.4版本的驱动用的lib库没有错的 ,所以就没有考虑lib库的问题 ,后来核对原码发现我的linux中根本找不到module_param ,而是module_parm ,
确实已经解决了 ,但对网友的批评 ,呵呵有一点不同的意见 ,不懂就要学阿 ,不然永远不懂 ,每个人都有这个阶段的 呵呵
很快就发现问题的所在了 ,俺当初只是认为为什么ldd本身带的原码也有错误 ,并且俺当时认为肯定是俺这边出了问题所以找不到原因才上来问的 。我贴出的是尽量原始的ldd的例子的错误代码 呵呵感谢大家的帮忙 ,俺虽然接触驱动时间不长 ,但基本的错误俺还是会查的 ,只是俺没有及时更新进展所以让大家误会了 ,而且俺发现好像没有办法结贴 ,有点头大了呵呵最近发现不回贴不行了呵呵
这个是俺得blog,欢迎大家到里面看看 ,我的里面有很多问题都没有解决 ,希望大家给点意见
http://blowingwind.cublog.cn
楼上?
-DMODULE
不是-DMODUOLE
还有,最好从第一页开始看!
头文件 我肯定已经查过了没有 ,所以才问的啊呵呵
已经解决了,版本的问题 ,程序是ldd3的例子 ,用的是2.6内核心我的是2。4的内核
不过我觉得jeffshia说的有点道理,我想他没恶意,只不过多了个惊叹号而已。
确实只是个简单的错误,而ldd又不是很简单的东西,或者说应该先看看apue这样的书
楼主一定已经知道怎么解决了,回这个帖子时就可以随便打岔了,呵呵~
也是一种有一定意义讨论,不算浪费空间
我觉得你这种看法完全是错误的,刚开始学,当然有不懂的,就是碰到问题解决问题,才能进一步提高,这只是一个小问题,为什么又不要看这本书了,我觉得你说话应该注意点,你也不是从这一步开始的吗?
楼主:如果你身边有比较牛的人,那你就去问问他,这事最直接也是最有效的办法;如果没有,那么你用find命令在/usr/src下查找这个文件,然后把-I对应到相应的include目录就可以了,在/usr/src下面应该有个Linux目录,你最好用那个目录,因为它是一个链接,指向当前系统的源码目录。
你可以试试。
如果你现在真的看不懂这是什么地方的错误的话
暂时不要看这本书!
我靠!你注册一周年啊~
linux/moduleparam.h 头文件没找到
到相应的路径找找吧
找到了改下路径就行了