|
在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也是指向这个目录的
实在没着了,还望各位老大指教一二 |
|