阅读:2620回复:8
请教设备驱动程序编译成模块时候的编译指令?
是gcc -O2 -DMODULE -D__KERNEL__ -c test.c??
__KERNEL__两边是双_?? |
|
沙发#
发布于:2003-06-12 14:14
是的
你也可以试试呀,结果不就出来了? |
|
|
板凳#
发布于:2003-06-12 19:50
关键是现在有编译错误:
storage size of \'test_fops\' isn\'t known 我的结构体是 struct file_operations lcdtxt_fops = { NULL, /* lseek */ lcdtxt_read, /* read */ lcdtxt_write, /* write */ NULL, /* readdir */ NULL, /* poll */ lcdtxt_ioctl, /* ioctl */ NULL, /* mmap */ lcdtxt_open, /* open */ lcdtxt_release, /* release */ NULL, /* fsync */ NULL, /* fasync */ NULL, /* check_media_change */ NULL /* revalidate */ }; 请教问题出在哪里? 急 |
|
地板#
发布于:2003-06-12 20:25
是不是调用子函数的时候方式不对?如:
应写成:open: lcdtxt_open |
|
地下室#
发布于:2003-06-13 13:50
不是,还没有调用子函数呢,只是编译的时候。
我把问题说的清楚点,请大虾帮忙! 1.gcc -O2 -DMODULE -D__KERNEL__ -c test.c编译错误 storage size of \'test_fops\' isn\'t known 错误提示就在源代码结构体 test_fops那儿, 我的结构体是 struct file_operations test_fops = { NULL, /* lseek */ test_read, /* read */ test_write, /* write */ NULL, /* readdir */ NULL, /* poll */ test_ioctl, /* ioctl */ NULL, /* mmap */ test_open, /* open */ test_release, /* release */ NULL, /* fsync */ NULL, /* fasync */ NULL, /* check_media_change */ NULL /* revalidate */ }; 2.我用jimmytao建议的格式 struct file_operations test_fops = { read: test_read, write: test_write, ioctl: test_ioctl, open: test_open, release: test_release, }; 编译错误是: storage size of \'test_fops\' isn\'t known variable \'test_fops\'has initalizer but incomplete type. unknow field \'read\'specified in initializer. unknow field \'write\'specified in initializer. unknow field \'ioctl\'specified in initializer. unknow field \'open\'specified in initializer. unknow field \'release\'specified in initializer. 3. 我用 struct file_operations test_fops = { test_read, test_write, test_ioctl, test_open, test_release, }; 编译错误是: storage size of \'test_fops\' isn\'t known variable \'test_fops\'has initalizer but incomplete type. |
|
5楼#
发布于:2003-07-30 10:32
我也遇到这个问题。不知道你解决了没有? 编译时总有这个提示,是什么问题? storage size of `scull_fops\' isn\'t known scull_fops是定义的file_operations的结构体. struct file_operations scull_fops = { llseek: scull_llseek, read: scull_read, write: scull_write, ioctl: scull_ioctl, open: scull_open, release: scull_release, }; 程序是<linux设备驱动程序(第二版)>带的例子.我试着编译了其他的几个例子,也都是这个问题,不知道为什么? 刚开始学习linux驱动开发,希望大家可以多讨论讨论。 |
|
6楼#
发布于:2003-07-30 13:39
你的例子是第二版的么?
在file_operations 结构的赋值中加上 owner: THIS_MODULE, 试试再 另外 #include <linux/fs.h> 包含了么? |
|
7楼#
发布于:2003-08-21 22:32
<linux设备驱动程序(第二版)>没有带源代码的呀?请问你难道有源码吗?有的话给我一份好吗?谢谢!!
我的邮箱是keasy0220@sina.com [编辑 - 8/21/03 by keasy] |
|
8楼#
发布于:2012-09-22 12:55
|
|