Ich habe tagelang versucht, das Modul für mein drahtloses USB-Gerät zu bauen.
Es ist ein Edimax EW-7811UN
Ich habe mehrere Ressourcen zum Erstellen von Modulen für Debian gefunden, aber keine für Arch. Gegenwärtig versuche ich mit dem ToolChain des Raspberry Pi GitHub zu kompilieren . Dies sind die Schritte, die ich unternommen habe:
- Die Treiberquellen wurden von der Edimax-Website heruntergeladen .
- Kernelquellen von GitHub heruntergeladen .
- Im Edimax MakeFile wurde eine bestimmte Make-Regel (gemäß der Edimax-Dokumentation) erstellt:
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
ist das Verzeichnis, das die Kernelquellen enthält.MODDESTDIR
ist das Verzeichnis, in das das Modul gelangen soll.CROSS_COMPILE
ist meine Toolchain (die hinzugefügt wurdePATH
)
Erster Versuch make
gibt diesen Fehler:
fatal error: linux/smp_lock.h: No such file or directory
Ich fand, dass dies ein veralteter Header ist, und das Verknüpfen mit diesem smp.h
sollte das Problem beheben. Der Build schlägt jedoch immer noch mit folgenden Quellfehlern fehl:
error: field 'recv_tasklet' has incomplete type
Ich habe genug kompiliert, um zu wissen, dass dies so aussieht, als ob der Build die neueste Kernel-Version nicht unterstützt, aber wenn dies so ist, wie wurde es dann für Debian erstellt?
Zusatzinformation:
- Die volle Leistung hier .
Antworten:
Anleitung zum Cross-Compilieren
Die Treiberquellen wurden von der Edimax-Website heruntergeladen .
Klonen Sie die Kernelquellen von GitHub .
cd
in deine Kernelquelle undcd
ininclude/linux
. Laufunzip
den Edimax-Download undtar -xzf
das Treiberpaket.cd
in dasdriver/rtl...
Unterverzeichnis.Bearbeiten
include/rtw_xmit.h
und#include <linux/interrupt.h>
unter den anderen Includes hinzufügen .Bearbeiten
os_dep/osdep_service.c
und hinzufügenunter den anderen beinhaltet.
Bearbeiten Sie das
Makefile
Hinzufügenunter ähnlichen Abschnitten.
arm-bcm2708-linux-gnueabi-{gcc|ld}
liegt auf Ihrem Weg, rennen Siemake CONFIG_PLATFORM_PI=y modules
.Das Modul sollte jetzt kompiliert sein.
quelle
MODDESTDIR
dann?/lib/modules/3.1.9-30-ARCH+/build
Verzeichnis mit den Kernel-Quellen verknüpfen .Versuchen Sie, die Datei config.gz von /proc/config.gz auf Ihr RPi zu kopieren. Dann gunzip es und benenne es in .config um und mach es wie oben.
quelle