无线网卡编译的问题

发布于 2022-09-22 13:24:19 字数 1386 浏览 14 评论 0

错误提示:
[root@localhost RT25USB-SRC-V2.0.8.0]# make
make -C /root/2.6.22 SUBDIRS=/root/RT25USB-SRC-V2.0.8.0 modules
make[1]: Entering directory `/root/2.6.22'
  CC [M]  /root/RT25USB-SRC-V2.0.8.0/rtusb_main.o
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c: In function 'CMDHandler':
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1079: warning: unused variable 'pkey'
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1078: warning: unused variable 'i'
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c: In function 'usb_rtusb_probe':
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: 'dev_base' undeclared (first use in this function)
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: (Each undeclared identifier is reported only once
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: for each function it appears in.)
/root/RT25USB-SRC-V2.0.8.0/rtusb_main.c:1807: error: 'struct net_device' has no member named 'next'
make[2]: *** [/root/RT25USB-SRC-V2.0.8.0/rtusb_main.o] 错误 1
make[1]: *** [_module_/root/RT25USB-SRC-V2.0.8.0] 错误 2
make[1]: Leaving directory `/root/2.6.22'
make: *** [all] 错误 2
[root@localhost RT25USB-SRC-V2.0.8.0]#

开发环境描述:
REDHAT AS5.1 内核版本:2.6.18-53.el5-i686'
交叉编译器环境:
Gcc 4.2.1 glibc 2.6.1
目标板内核:
2.6.22
无线网卡芯片RT2571

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

甜中书 2022-09-29 13:24:19

CC = /home/arm/toolchains/bin/arm-s3c2410-linux-gnueabi-gcc
LD = /home/arm/toolchains/bin/arm-s3c2410-linux-gnueabi-ld

ARCH = arm
CROSS_COMPILE = /home/arm/toolchains/bin/arm-s3c2410-linux-gnueabi-

WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs

## Comment/uncomment the following line to enable/disable debugging
#CFLAGS += -DDBG

CFLAGS += $(WFLAGS) -fsigned-char

obj-m := rt2570.o

rt2570-objs :=  rtusb_main.o  mlme.o rtusb_bulk.o connect.o sync.o rtusb_init.o rtmp_tkip.o wpa.o rtmp_wep.o rtusb_info.o assoc.o auth.o auth_rsp.o md5.o rtusb_io.o sanity.o rtusb_data.o

#KDIR:=/root/linux-2.6.24
KDIR:=/root/2.6.22
#KERNEL_SRC:=/root/linux-2.6.24
KERNEL_SRC:=/root/2.6.22

MODULE_NAME:=rt2570

PATCHLEVEL:=6

ND_CONF=/etc/sysconfig/network-scripts/ifcfg-rausb0

ifdef NDDIR
        NDDIR := $(NDDIR)
else
        NDDIR := /etc/sysconfig/network-scripts
endif

ifdef MOD_CONF
        MOD_CONF := $(MOD_CONF)       
else
        MOD_CONF := /etc/modprobe.conf
endif

all:
        make -C $(KERNEL_SRC) SUBDIRS=$(shell pwd) modules

#clean:
#        rm -rf *.o *~ .*.cmd *.ko *.mod.c .tmp_versions built-in.o

[ 本帖最后由 dreamice 于 2008-11-4 13:02 编辑 ]

稀香 2022-09-29 13:24:19

能否把你的rtusb_main.c程序贴出来?开发环境内核版本和目标内核版本不一致,这个可能是版本差异引起的错误。

潇烟暮雨 2022-09-29 13:24:19

Makefile看起来应该不存在问题。

豆芽 2022-09-29 13:24:19

头部包括的那些7788

#include "rt_config.h"

unsigned long flagg;
ULONG        RTDebugLevel = RT_DEBUG_TRACE;

#define KERNEL_20424        0x20418
#define KERNEL_20418        0x20412

/* Kernel thread and vars, which handles packets that are completed. Only
* packets that have a "complete" function are sent here. This way, the
* completion is run out of kernel context, and doesn't block the rest of
* the stack. */
static int mlme_kill;
static int RTUSBCmd_kill;

1803~1820行,就是出错的地方
                for (i = 0; i < 8; i++)

                {

                        sprintf(slot_name, "rausb%d", i);

                       

                        for (device = dev_base; device != NULL; device = device->next)

                        {

                                if (strncmp(device->name, slot_name, 4) == 0)

                                {

                                        break;

                                }

                        }

                        if(device == NULL)        break;

                }

                if(i == 8)

                {

                        DBGPRINT(RT_DEBUG_ERROR, "No available slot name\n");

                        return res;

                }

[ 本帖最后由 dreamice 于 2008-11-4 13:13 编辑 ]

剪不断理还乱 2022-09-29 13:24:19

以前还提示有一个status的成员没有定义 但是我添加过后就没事了  这个->next就没见过 所以...........

定格我的天空 2022-09-29 13:24:19

几点分析建议:
1、'dev_base' 在这个文件里没有找到定义,你查一下,是不是在其它文件中定义了,但你没有包进头文件;
2、在2.6.18中,确实net_device有成员 next,在2.6.22中,似乎变成了link_watch_next;所以会报error:has no member named 'next'

不语却知心 2022-09-29 13:24:19

那我应该是修改驱动程序的调用为link_watch_next
还是为内核的头文件添加net_device的next成员

就安全性我觉得在驱动里面修改调用比较好,你觉得是这样吗?

差↓一点笑了 2022-09-29 13:24:19

原帖由 finalfantasy000 于 2008-11-4 18:34 发表
那我应该是修改驱动程序的调用为link_watch_next
还是为内核的头文件添加net_device的next成员

就安全性我觉得在驱动里面修改调用比较好,你觉得是这样吗?

你应该做的是,检查两个版本内核代码之间的差异,然后搞明白2.6.18中的next对应于2.6.22中的哪一个成员;
可能还有其他的改变,这样你才算是真正做好了这个驱动程序。

欢你一世 2022-09-29 13:24:19

正在找 内核的代码量比较大 还没有定位出来  我还是第一做驱动程序的调整

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文