LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 862|回复: 1

网卡驱动编译出错

[复制链接]
发表于 2009-6-3 18:55:44 | 显示全部楼层 |阅读模式
在FC6(内核版本为:2.6.18-1.2798)上交叉编译一个网卡驱动程序(厂家提供的),目标机用的内核为2.6.28.10,总是出错:

如果用fc6的内核树编译,则可以通过, 但用自己生成的2.6.28.10内核树,则总是通不过, 试过多种方法,原以为是内核配置错误,于是又用fc6的内核配置来重新编译内核
make bzImage
make modules
make modules_install

可是还是不行, 换过其它内核2.6.24, 2.6.27....都出现相同的问题, 但不管用何内核, 自己做的一些简单的IO驱动程序却能编译成功, 真是奇怪了.

两次编译结果如下:

用自己的内核树编译如下换了好几个内核版本均出现相同情况)
[rollin7@rollin7-fc6 r6040]$ make
make -C /MyData/linux-2.6.28.10 M=/MyData/program/driver/r6040 modules
make[1]: Entering directory `/MyData/linux-2.6.28.10'
  CC [M]  /MyData/program/driver/r6040/r6040.o
/MyData/program/driver/r6040/r6040.c: 在函数 ‘mdio_write’ 中:
/MyData/program/driver/r6040/r6040.c:236: 警告:未使用的变量 ‘np’
/MyData/program/driver/r6040/r6040.c: 在函数 ‘r6040_init_one’ 中:
/MyData/program/driver/r6040/r6040.c:278: 错误:隐式声明函数 ‘SET_MODULE_OWNER’
/MyData/program/driver/r6040/r6040.c: 在函数 ‘r6040_open’ 中:
/MyData/program/driver/r6040/r6040.c:381: 错误:‘SA_SHIRQ’ 未声明 (在此函数内第一次使用)
/MyData/program/driver/r6040/r6040.c:381: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
/MyData/program/driver/r6040/r6040.c:381: 错误:所在的函数内只报告一次。)
/MyData/program/driver/r6040/r6040.c:381: 警告:传递参数 2 (属于 ‘request_irq’)时在不兼容的指针类型间转换
/MyData/program/driver/r6040/r6040.c: 在函数 ‘r6040_GetSet_MACaddress’ 中:
/MyData/program/driver/r6040/r6040.c:1041: 警告:未使用的变量 ‘lp’
/MyData/program/driver/r6040/r6040.c:1056: 警告:在有返回值的函数中未发现 return 语句
/MyData/program/driver/r6040/r6040.c: 在函数 ‘r6040_init’ 中:
/MyData/program/driver/r6040/r6040.c:1080: 错误:隐式声明函数 ‘pci_module_init’
make[2]: *** [/MyData/program/driver/r6040/r6040.o] 错误 1
make[1]: *** [_module_/MyData/program/driver/r6040] 错误 2
make[1]: Leaving directory `/MyData/linux-2.6.28.10'
make: *** [default] 错误 2
[rollin7@rollin7-fc6 r6040]$ vi Makefile
[rollin7@rollin7-fc6 r6040]$


用FC6自身的内核树则编译顺利通过
[rollin7@rollin7-fc6 r6040]$ make
make -C /lib/modules/2.6.18-1.2798.fc6/build M=/MyData/program/driver/r6040 modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-1.2798.fc6-i686'
  CC [M]  /MyData/program/driver/r6040/r6040.o
/MyData/program/driver/r6040/r6040.c: 在函数 ‘mdio_write’ 中:
/MyData/program/driver/r6040/r6040.c:236: 警告:未使用的变量 ‘np’
/MyData/program/driver/r6040/r6040.c: 在函数 ‘r6040_GetSet_MACaddress’ 中:
/MyData/program/driver/r6040/r6040.c:1041: 警告:未使用的变量 ‘lp’
/MyData/program/driver/r6040/r6040.c:1056: 警告:在有返回值的函数中未发现 return 语句
  Building modules, stage 2.
  MODPOST
  CC      /MyData/program/driver/r6040/r6040.mod.o
  LD [M]  /MyData/program/driver/r6040/r6040.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-1.2798.fc6-i686'
[rollin7@rollin7-fc6 r6040]$

其中,/MyData/linux-2.6.28.10为我的内核源目录, make modules_install 之后的/lib/modules/2.6.28.10/build也是指向这个目录的

实在没着了,还望各位老大指教一二
 楼主| 发表于 2009-6-9 19:13:58 | 显示全部楼层
NND,最新内核版本的驱动下面就有这个驱动,编译成功能过,估计原来的驱动程序太老了的原因
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表