मैं अपने USB वायरलेस डिवाइस के लिए मॉड्यूल बनाने के लिए दिनों से कोशिश कर रहा हूं।
यह एक एडिमैक्स EW-7811UN है
मुझे डेबियन के लिए मॉड्यूल बनाने पर कई संसाधन मिले हैं, लेकिन आर्क के लिए कोई नहीं। वर्तमान में मैं रास्पबेरी पाई गिटहब पर पाए गए टूलचैन का उपयोग करके क्रॉस-कंपाइल करने का प्रयास कर रहा हूं । ये कदम मैंने उठाए हैं:
- एडिमैक्स वेबसाइट से ड्राइवर स्रोतों को डाउनलोड किया ।
- GitHub से कर्नेल स्रोतों को डाउनलोड किया ।
- एडिमैक्स मेकफाइल में एक विशिष्ट मेक नियम (एडिमैक्स दस्तावेज के अनुसार) बनाया गया:
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)
पहले प्रयास में makeयह त्रुटि मिलती है:
fatal error: linux/smp_lock.h: No such file or directory
मैंने पाया कि यह एक पुराना हेडर है, और smp.hइस समस्या को ठीक करने के लिए इसे सिम्बल करना चाहिए। हालाँकि, स्रोत त्रुटियों के साथ बिल्ड अभी भी विफल रहता है, जो इस तरह दिखता है:
error: field 'recv_tasklet' has incomplete type
मैंने यह जानने के लिए पर्याप्त संकलन किया है कि क्या बिल्ड नवीनतम कर्नेल संस्करण का समर्थन नहीं करता है, लेकिन यदि ऐसा है तो इसे डेबियन के लिए कैसे बनाया गया है?
अतिरिक्त जानकारी:
- पूर्ण उत्पादन यहाँ ।