foxding
驱动牛犊
驱动牛犊
  • 注册日期2003-06-11
  • 最后登录2004-01-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2620回复:8

请教设备驱动程序编译成模块时候的编译指令?

楼主#
更多 发布于:2003-06-12 13:10
是gcc -O2 -DMODULE -D__KERNEL__ -c test.c??
__KERNEL__两边是双_??

flycat0101
驱动小牛
驱动小牛
  • 注册日期2002-06-24
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望22点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-06-12 14:14
是的
你也可以试试呀,结果不就出来了?
我思,故我在
foxding
驱动牛犊
驱动牛犊
  • 注册日期2003-06-11
  • 最后登录2004-01-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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 */
};

请教问题出在哪里?
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-12 20:25
是不是调用子函数的时候方式不对?如:
应写成:open: lcdtxt_open
foxding
驱动牛犊
驱动牛犊
  • 注册日期2003-06-11
  • 最后登录2004-01-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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.
john_woo
驱动牛犊
驱动牛犊
  • 注册日期2003-06-16
  • 最后登录2004-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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驱动开发,希望大家可以多讨论讨论。
cheetah
驱动牛犊
驱动牛犊
  • 注册日期2003-06-25
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-30 13:39
你的例子是第二版的么?
在file_operations 结构的赋值中加上
owner: THIS_MODULE,
试试再
另外
#include <linux/fs.h>
包含了么?
keasy
驱动牛犊
驱动牛犊
  • 注册日期2003-02-20
  • 最后登录2003-08-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-21 22:32
<linux设备驱动程序(第二版)>没有带源代码的呀?请问你难道有源码吗?有的话给我一份好吗?谢谢!!
我的邮箱是keasy0220@sina.com

[编辑 -  8/21/03 by  keasy]
superlk1
驱动牛犊
驱动牛犊
  • 注册日期2012-09-22
  • 最后登录2012-09-22
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2012-09-22 12:55

顶楼主 楼主观点不错  

www.ZTSUN.COM  充气娃娃多少钱
www.szyuantaidz.com  脚气
www.yushenjt.com  阴茎短小
www.btdyj.com  脚臭
www.1tidc.com  蹭网器
www.cn-xyz.com  卡皇
www.hfloge.com  白发治疗
www.hnshiqi.com  英国卫裤
www.wzeas.com  治疗白发
www.qdzjzc.com  伟哥官网
www.szjczq.com  日本充气娃娃
游客

返回顶部