2011-09-20 10 views
7

पेड़ से कर्नेल चालक का निर्माण करते समय, मैं इसे ड्राइवर निर्देशिका में चलाता हूं, जहां KERNELDIR या तो कर्नेल स्रोत, या हेडर के लिए पथ है।सही रूप से लिनक्स हेडर निर्यात करें, मॉड्यूल

make headers_install ARCH=i386 INSTALL_HDR_PATH=$(HEADERSDIR) 

मैं निर्यात अनुपयुक्त (एक पूर्ण गिरी स्रोत पेड़ के बिना) के खिलाफ मॉड्यूल का निर्माण करने के कई फ़ाइलों और फ़ोल्डरों को खोजने के लापता होने के लिए, की तरह लग:

make -C $(KERNELDIR) M=$(PWD) modules 

जब हेडर निर्माण करने के लिए अपने आप का उपयोग कर की कोशिश कर रहा एक Makefile, लिपियों, include/generated/autoconf.h या include/config/auto.conf आदि

डेबियन, rules.real में वर्णित के रूप हालांकि यह अधिक करता Documentation/make/headers_install.txt में वर्णन किया गया की तुलना में, जो देखने के लिए एक प्रयोग करने योग्य तरीके से काम करता है, एमएस "मानक" तरीका नहीं है।

संक्षेप में: मैं लिनक्स हेडर को सही तरीके से निर्यात कैसे करूं, इसलिए मैं इसके खिलाफ बाहरी मॉड्यूल बना सकता हूं?

+0

मुझे अपने आप को 'autoconf.h' से परेशानी हुई है। अगर मुझे सही याद है, तो मैंने इसे सिर्फ उस फ़ोल्डर से कॉपी किया जहां मैंने अपना कर्नेल बनाया था – Shahbaz

उत्तर

2

मेरा मानना ​​है कि कर्नेल हेडर_इंस्टॉल का फ़ाइल लक्ष्य सी लाइब्रेरी और टूल चेन के उत्पादन के लिए लिनक्स हेडर के उत्पादन के लिए है, न कि पेड़ कर्नेल मॉड्यूल के निर्माण को सक्षम करने के उद्देश्य से पूर्ण कॉन्फ़िगर किए गए कर्नेल स्रोत कोड ।

वास्तव में, मैं पूर्ण कर्नेल स्रोत कोड के बिना पेड़ कर्नेल मॉड्यूल से बाहर निर्माण का अनुमान लगा रहा हूं और वास्तव में वितरण द्वारा निर्मित "हैक" है।

5

हेडर_इंस्टॉल उपयोगकर्ता के दृष्टिकोण बिंदु से उपयोग करने के लिए उपयुक्त शीर्षलेख फ़ाइलों का एक सेट निर्यात करने के लिए है। यह कर्नेल के यूजर स्पेस का खुलासा एपीआई है। आइए मान लें कि आप एक कस्टम नई ioctl बनाते हैं, एक custome डेटा संरचना के साथ। यह ऐसी जानकारी है जिसे आप उपयोगकर्ता को जानना नहीं चाहते हैं, ताकि उपयोगकर्ता स्पेस प्रोग्राम आपके अद्भुत नए ioctl का उपयोग कर सके।

लेकिन जो कुछ भी उपयोगकर्तास्थान से दिखाई नहीं दे रहा है, वह कर्नेल के लिए "निजी" है, या अन्य शब्द आंतरिक एपीआई में, उपयोगकर्ता स्पेस के संपर्क में नहीं है।

तो पेड़ मॉड्यूल से बाहर निकलने के लिए, आपको या तो एक पूर्ण कॉन्फ़िगर किए गए स्रोत पेड़ या कर्नेल हेडर को आपके डिस्ट्रो द्वारा पैक किए जाने की आवश्यकता है। उदाहरण के लिए उबंटू/डेबियन पर लिनक्स-हेडर या लिनक्स-कर्नेल-हेडर पैकेज की तलाश करें।

संबंधित मुद्दे