Od kilku dni próbuję włączać i wyłączać moduł dla mojego urządzenia bezprzewodowego USB.
Jest to Edimax EW-7811UN
Znalazłem kilka zasobów dotyczących budowania modułów dla Debiana, ale żadnych dla Arch. Obecnie próbuję dokonać kompilacji krzyżowej przy użyciu ToolChain znalezionego na Raspberry Pi GitHub . Oto kroki, które podjąłem:
- Pobrano źródła sterowników ze strony internetowej Edimax .
- Pobrałem źródła jądra z GitHub .
- Utworzono określoną regułę make (zgodnie z dokumentacją Edimax) w pliku 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
to katalog zawierający źródła jądra.MODDESTDIR
to katalog, w którym moduł ma się kończyć.CROSS_COMPILE
to mój zestaw narzędzi (do którego dodanoPATH
)
Pierwsza próba make
podania tego błędu:
fatal error: linux/smp_lock.h: No such file or directory
Odkryłem, że jest to nieaktualny nagłówek i linkowanie go w celu smp.h
rozwiązania problemu. Jednak kompilacja nadal kończy się niepowodzeniem z błędami źródłowymi, które wyglądają tak:
error: field 'recv_tasklet' has incomplete type
Zrobiłem wystarczająco dużo kompilacji, aby wiedzieć, że wygląda na to, że kompilacja nie obsługuje najnowszej wersji jądra, ale jeśli tak, to w jaki sposób została zbudowana dla Debiana?
Informacje dodatkowe:
- Pełna moc tutaj .
Odpowiedzi:
Instrukcje dotyczące kompilacji krzyżowej
Pobrano źródła sterowników ze strony internetowej Edimax .
Sklonuj źródła jądra z GitHub .
cd
do twojego źródła jądra icd
doinclude/linux
. Biegaćunzip
pobierz Edimax itar -xzf
pakiet sterowników.cd
dodriver/rtl...
podkatalogu.Edytuj
include/rtw_xmit.h
i dodaj#include <linux/interrupt.h>
w ramach innych dołączeń.Edytuj
os_dep/osdep_service.c
i dodajw ramach innych obejmuje.
Edytuj
Makefile
dodawaniew podobnych sekcjach.
arm-bcm2708-linux-gnueabi-{gcc|ld}
jest na twojej drodze, biegnijmake CONFIG_PLATFORM_PI=y modules
.Moduł powinien być teraz skompilowany.
źródło
MODDESTDIR
?/lib/modules/3.1.9-30-ARCH+/build
katalog do źródeł jądra.Spróbuj skopiować config.gz z /proc/config.gz na swój RPi. Następnie wystrzel go z pistoletu i zmień jego nazwę na .config i wykonaj jak wyżej.
źródło