这是Edimax EW-7811UN
我在Debian的构建模块上发现了一些资源,但Arch却没有。目前,我正在尝试使用Raspberry Pi GitHub上的ToolChain进行交叉编译。这些是我已采取的步骤:
从Edimax网站下载了驱动程序源。
从GitHub下载了内核源。 (根据Edimax文档)在Edimax MakeFile中:
ifeq ($(CONFIG_PLATFORM_PI), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
KVER := 3.1.9-30-ARCH+
KSRC := /pi-sources/lib/modules/3.1.9-30-ARCH+/build
MODDESTDIR := /pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif
是包含内核源代码的目录。KSRC
是希望模块结束的目录。MODDESTDIR
是我的工具链(已添加到CROSS_COMPILE
中)第一次尝试
PATH
会出现此错误:fatal error: linux/smp_lock.h: No such file or directory
我发现这是过时的标头,并将其符号链接到
make
应该可以解决此问题。但是,该构建仍会失败,并显示源错误,如下所示:error: field 'recv_tasklet' has incomplete type
我已经完成了足够的编译,以了解该看起来好像该构建不支持最新的内核版本,但是如果是这样,那么它是如何为Debian构建的?
ation:
完整输出在这里。
#1 楼
交叉编译说明从Edimax网站下载了驱动程序源。
从GitHub克隆内核源。
cd
到您的内核源中和cd
到include/linux
中。运行ln -s smp.h smp_lock.h`.
unzip
Edimax下载和tar -xzf
驱动程序包。将cd
放入driver/rtl...
子目录。编辑
include/rtw_xmit.h
并在其他包含项下添加#include <linux/interrupt.h>
。编辑
os_dep/osdep_service.c
并添加其他包含。 br />
假设
Makefile
在您的路径中,请运行arm-bcm2708-linux-gnueabi-{gcc|ld}
。现在应该编译模块了。
评论
构建成功!但是模块建立在哪里?所以我可以将其复制到Pi上。
–活动
2012年7月19日在12:12
我认为驱动程序包的根目录。
–亚历山大·张伯伦
2012年7月19日在12:19
嗯,似乎在那里。奇怪的。那么,MODDESTDIR有什么意义呢?
–活动
2012年7月19日在12:20
不知道!!!!!!!!!
–亚历克斯·张伯伦
2012年7月19日在12:20
为了在Raspberry Pi上构建它,我还不得不将/lib/modules/3.1.9-30-ARCH+/build目录符号链接到内核源代码。
–活动
2012年7月24日17:42
#2 楼
尝试从RPi上的/proc/config.gz复制config.gz。然后将其进行枪压压缩,并将其重命名为.config并按上述进行制作。
评论
您能否说明为什么这对您的回答很有用?
–活动
2012年7月19日在12:34
评论
我有相同的适配器,尽管还没有尝试使用它!请让我知道您如何处理它,并在以后添加您的经验,即使它是负面的。
@Tomas,更多赏金!确保Alex这次没有得到它:)