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 .