当前位置:  技术问答>问:关于gcc编译器和g++编译器 iis7站长之家

关于编译pci设备驱动程序出现的问题

    来源: 互联网  发布时间:2015-09-23

    本文导语:  我的代码源程序如下: #ifndef _PCI_H #define _PCI_H #include  #include  #include  #include  #include  #include  #include  #include  #define PCI_VENDOR_ID_netb  0x10ee #define PCI_DEVICE_ID_netb 0x1000 unsigned int pci_major = 250; static ssize_t rea...

我的代码源程序如下:
#ifndef _PCI_H
#define _PCI_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


#define PCI_VENDOR_ID_netb  0x10ee
#define PCI_DEVICE_ID_netb 0x1000

unsigned int pci_major = 250;



static ssize_t read_pci(struct file *file,char *buf,ssize_t count,loff_t *ppos) 

int left;

// if ((verify_area(VERIFY_WRITE,buf,count) == -EFAULT ) 
// return -EFAULT; 

for(left = count ; left > 0 ; left--) 

__put_user(1,buf,1); 
buf++; 

return count; 


static ssize_t write_pci(struct file *file,char *buf,ssize_t count,loff_t *ppos) 

return count;


static int ioctl_pci(struct inode *inode, struct file * file, unsigned int count, unsigned long count1)
{
return 0;
}

static int open_pci(struct inode *inode,struct file *file ) 

//MOD_INC_USE_COUNT; 
return 0; 


static void release_pci(struct inode *inode,struct file *file ) 

//MOD_DEC_USE_COUNT; 
return;
}


static struct file_operations pci_fops ={
    owner:THIS_MODULE,
    NULL,
    read:read_pci,
    write:write_pci,
    NULL,
    NULL,
    ioctl:ioctl_pci,
    NULL,
    open:open_pci,
    NULL,
    release:release_pci,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};


static int init_module(struct pci_dev *dev){
/*找这块设备是否存在*/
dev = pci_find_device(PCI_VENDOR_ID_netb,
PCI_DEVICE_ID_netb,dev);
if(dev==0){
//printk(KERN_INFO "pci: can't get major numbern"); 
return -1;
};


/*启动pci设备*/
if(pci_enable_device(dev)) {;}

/*注册设备*/
register_chrdev(pci_major,"pci",&pci_fops);


}

void cleanup_module(void) 

unregister_chrdev(pci_major,"pci"); 




#endif




程序使用gcc -DMODULE -D__KERNEL__ -DLINUX pci.c编译
出现了如下错误信息:
cpci.c: At top level:
cpci.c:21: warning: `struct file' declared inside parameter list
cpci.c:21: warning: its scope is only this definition or declaration, which is probably not what you want
cpci.c:36: warning: `struct file' declared inside parameter list
cpci.c:41: warning: `struct file' declared inside parameter list
cpci.c:41: warning: `struct inode' declared inside parameter list
cpci.c:46: warning: `struct file' declared inside parameter list
cpci.c:46: warning: `struct inode' declared inside parameter list
cpci.c:52: warning: `struct file' declared inside parameter list
cpci.c:52: warning: `struct inode' declared inside parameter list
cpci.c:59: variable `cpci_fops' has initializer but incomplete type
cpci.c:60: unknown field `owner' specified in initializer
cpci.c:60: warning: excess elements in struct initializer
cpci.c:60: warning: (near initialization for `cpci_fops')
cpci.c:61: warning: excess elements in struct initializer
cpci.c:61: warning: (near initialization for `cpci_fops')
cpci.c:62: unknown field `read' specified in initializer
cpci.c:62: warning: excess elements in struct initializer
cpci.c:62: warning: (near initialization for `cpci_fops')
cpci.c:63: unknown field `write' specified in initializer
cpci.c:63: warning: excess elements in struct initializer
cpci.c:63: warning: (near initialization for `cpci_fops')
cpci.c:64: warning: excess elements in struct initializer
cpci.c:64: warning: (near initialization for `cpci_fops')
cpci.c:65: warning: excess elements in struct initializer
cpci.c:65: warning: (near initialization for `cpci_fops')
cpci.c:66: unknown field `ioctl' specified in initializer
cpci.c:66: warning: excess elements in struct initializer
cpci.c:66: warning: (near initialization for `cpci_fops')
cpci.c:67: warning: excess elements in struct initializer
cpci.c:67: warning: (near initialization for `cpci_fops')
cpci.c:68: unknown field `open' specified in initializer
cpci.c:68: warning: excess elements in struct initializer
cpci.c:68: warning: (near initialization for `cpci_fops')
cpci.c:69: warning: excess elements in struct initializer
cpci.c:69: warning: (near initialization for `cpci_fops')
cpci.c:70: unknown field `release' specified in initializer
cpci.c:70: warning: excess elements in struct initializer
cpci.c:70: warning: (near initialization for `cpci_fops')
cpci.c:71: warning: excess elements in struct initializer
cpci.c:71: warning: (near initialization for `cpci_fops')
cpci.c:72: warning: excess elements in struct initializer
cpci.c:72: warning: (near initialization for `cpci_fops')
cpci.c:73: warning: excess elements in struct initializer
cpci.c:73: warning: (near initialization for `cpci_fops')
cpci.c:74: warning: excess elements in struct initializer
cpci.c:74: warning: (near initialization for `cpci_fops')
cpci.c:75: warning: excess elements in struct initializer
cpci.c:75: warning: (near initialization for `cpci_fops')
cpci.c:76: warning: excess elements in struct initializer
cpci.c:76: warning: (near initialization for `cpci_fops')
cpci.c:78: warning: excess elements in struct initializer
cpci.c:78: warning: (near initialization for `cpci_fops')
cpci.c:81: warning: `struct pci_dev' declared inside parameter list
cpci.c: In function `init_module':
cpci.c:84: warning: assignment makes pointer from integer without a cast
cpci.c: At top level:
cpci.c:59: storage size of `cpci_fops' isn't known
make: *** [cpci] Error 1

如何改进呢?

|
老问题了,要加上-I/usr/src/linux/include,
头文件要使用kernel的

|
or -I /usr/src/linux-2.4/include/

    
 
 

您可能感兴趣的文章:

  • 在cygwin编译驱动程序要不要交叉编译?
  • 谁编译过PLX9054 Linux的驱动程序,我给100分教我编译和安装??
  • !请问,新下载的驱动程序该如何编译进内核呢?
  • 我用的是atmel一个成熟的开发板。有一个触摸屏驱动程序,以<M>的方式编译为模块,编译时提示某个外部函数没有定义,但如果以<*>的方式编译进内核,则不会出错。请教下可能是什么原因?
  • gcc直接编译驱动程序(2.6内核)?
  • 请教:修改Linux内核时,需要调用驱动程序的函数,头文件也包含了,但是编译时候说头文件找不到!
  • <linux设备驱动程序>的scull编译问题
  • 在编译字符驱动程序时,为何总是找不到头文件!急......
  • redhat 9.0 下驱动程序开发是否需要重新编译内核?求高手指教!
  • 【求助】基于2.6.29内核编译的驱动程序能否应用于2.6.32内核的系统?
  • 请问重新编译LINUX内核是否能将没有用的外设的驱动程序删除并减少内核占有内存的资源?请好心人仕指教!
  • 把网卡驱动程序模版编译成模块加载进内核时出错?
  • 关于驱动程序的编译.初学,请教几个问题!
  • 谁在FC6上编译过PLX9054 Linux的驱动程序,我发源代码请留Email教编译和安装,急100分
  • 一个linux设备驱动程序书里源代码编译的问题
  • 关于驱动程序模块编译
  • 编译程序时出现[Message][ODBC 驱动程序 管理器]非法的描述器索引。是什么问题??
  • 请教驱动程序交叉编译问题(初学)
  • 我找了个USB转串口的驱动源程序,但不知如何编译安装,哪位好心人帮帮我?
  • <<linux设备驱动程序>>中的一个关于编译内核问题
  • 动态编译与静态编译驱动程式疑问?
  • 请问做好的驱动,发布给用户的时候,用户必须要在各自的Linux中重新编译驱动源码才能使用吗?
  • 2.6.x驱动的编译如何指定编译工具?
  • ubuntu编译驱动问题
  • 将驱动模块编译进内核是否有用??
  • rndis驱动编译成内核模块
  • 驱动模块编译调试问题、、????
  • 怎样交叉编译2.6内核下的驱动?
  • Linux下PCI驱动,怎么解决不同版本内核都需要重新编译的问题??
  • 求助,关于编译驱动进内核的一个问题,实在找不到资料了!
  • 关于网卡驱动编译的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 编译GCC时能不能只编译C/C++的编译器?
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 关于如何把编译进内核的编译成模块
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译
  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??
  • linux下有没有能编译出16bit代码的C语言编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3