linux驱动编译与加载Linux认证考试

文章作者 100test 发表时间 2010:02:24 16:25:36
来源 100Test.Com百考试题网


  编译驱动源码,modpost老是出错,于是进入/usr/src/`uname -r`目录下

  #make scripts

  接着再编译源码,之前的错误消失了。出现了新的错误:

  **1.c:1052:error:void value not ignored as it ought to be

  **1.c源代码中的1052行是:

  ret = unregister_chrdev(MAJOR, DEVICE_NAME).

  当注销此行时可以编译通过,找到linux/fs.h头文件,里面定义了unregister_chrdev()函数:

  extern void unregister_chrdev(unsigned int,const char *).

  此处定义的为void类型函数,而在程序中将其赋值给了ret,这就造成了编译错误。

  于是注释了相应的代码,用unregister_chrdev(MAJOR, DEVICE_NAME).代替即可。这样就能通过编译了。又出现了新的问题:

  **2.c:474:’SA_INTERRUPT’undeclared(first use in this function)//{ 原来头文件里没有SA_INTERRUPT了,一般使用IRQF_SHARED 了。}

  头文件为/usr/src/linux-2.6.26.8RedHawk5.2.4/include/linux下的interrupte.h

  **2.c:474:’SA_SHIRQ’undeclared(first use in this function)//{ SA_SHIRQ 已经不支持了,用 IRQF_SHARED }

  于是修改了这行,通过编译。

  新的问题又出现了:

  **3.c:57:error:’POLL_IN’undeclared(first use in this function)

  考虑肯定是由于头文件的问题,直接注销此行,先编译通过再说,编译成功!


相关文章


Linux本地root密码破解方法Linux认证考试
Linux内核访问外设I_O资源的方式Linux认证考试
探究在Linux中添加新的系统调用Linux认证考试
安装Linux系统之后无法识别网卡Linux认证考试
linux驱动编译与加载Linux认证考试
LINUX内核关于IP分片重组问题请教Linux认证考试
阐述LinuxMakefile文件概念Linux认证考试
linux常用下载工具wgetmygetcurlLinux认证考试
伪装Linux假象加强自身安全Linux认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛