Saya telah mencoba dan menonaktifkan selama berhari-hari untuk membangun modul untuk perangkat nirkabel USB saya.
Ini adalah Edimax EW-7811UN
Saya telah menemukan beberapa sumber tentang membangun modul untuk Debian, tetapi tidak ada untuk Arch. Saat ini saya mencoba mengkompilasi silang menggunakan ToolChain yang ditemukan di Raspberry Pi GitHub . Inilah langkah-langkah yang telah saya ambil:
- Mengunduh sumber driver dari situs web Edimax .
- Mengunduh sumber kernel dari GitHub .
- Membuat aturan make tertentu (sesuai dengan dokumentasi Edimax) di 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
adalah direktori yang berisi sumber kernel.MODDESTDIR
adalah direktori yang Anda inginkan modul berakhir.CROSS_COMPILE
adalah toolchain saya (yang telah ditambahkan kePATH
)
Upaya pertama make
memberi kesalahan ini:
fatal error: linux/smp_lock.h: No such file or directory
Saya menemukan bahwa ini adalah header yang sudah ketinggalan zaman, dan menghubungkannya untuk smp.h
memperbaiki masalah. Namun, build masih gagal dengan kesalahan sumber, yang terlihat seperti ini:
error: field 'recv_tasklet' has incomplete type
Saya telah melakukan cukup kompilasi untuk mengetahui ini terlihat seolah-olah build tidak mendukung versi kernel terbaru, tetapi jika demikian maka bagaimana ia dibangun untuk Debian?
Informasi tambahan:
- Output penuh di sini .
Jawaban:
Instruksi untuk kompilasi silang
Mengunduh sumber driver dari situs web Edimax .
Mengkloning sumber kernel dari GitHub .
cd
ke dalam sumber kernel Anda dancd
keinclude/linux
. Menjalankanunzip
unduhan Edimax dantar -xzf
paket driver.cd
ke dalamdriver/rtl...
subdirektori.Edit
include/rtw_xmit.h
dan tambahkan di#include <linux/interrupt.h>
bawah yang lain termasuk.Edit
os_dep/osdep_service.c
dan tambahkandi bawah yang lain termasuk.
Edit
Makefile
penambahandi bawah bagian yang serupa.
arm-bcm2708-linux-gnueabi-{gcc|ld}
ada di jalur Anda, jalankanmake CONFIG_PLATFORM_PI=y modules
.Modul sekarang harus dikompilasi.
sumber
MODDESTDIR
?/lib/modules/3.1.9-30-ARCH+/build
direktori ke sumber kernel.Coba salin config.gz dari /proc/config.gz di RPi Anda. Lalu gunzip dan ubah nama menjadi .config dan buat seperti di atas.
sumber