अंतर / usr / शामिल / sys और / usr / शामिल / linux?


12

खैर, स्पष्ट रूप से एक अंतर है, लेकिन मैं तर्कसंगत के बारे में उत्सुक हूं कि कुछ चीजें क्यों / usr / शामिल हैं / sys और अन्य के तहत / usr / शामिल / linux जाते हैं, और एक ही हेडर फ़ाइल नाम है? क्या यह POSIX vx गैर-POSIX के साथ कुछ करना है?

इसके अलावा, मैं कर्नेल-हेडर पैकेज को हथियाने के द्वारा अपने फेडोरा सिस्टम पर हेडर के साथ पॉप / usr / / linux को शामिल / प्रबंधित करने में कामयाब रहा हूं, क्या हेडर फ़ाइलों को प्राप्त करने के लिए मेरे लिए एक मानक पैकेज नाम है जो / usr / sys के अंतर्गत जाता है। ? मैं इसे खोजने में सक्षम नहीं हूं।

जवाबों:


14

के तहत /usr/include/linuxऔर हेडर /usr/include/asm*लिनक्स कर्नेल के साथ वितरित किए जाते हैं। अन्य हेडर ( /usr/include/sys/*.h, /usr/include/bits/*.hऔर कई और अधिक) सी लाइब्रेरी के साथ वितरित किए जाते हैं ( जीएनयू सी लाइब्रेरी , जिसे ग्लिबैक के रूप में भी जाना जाता है, सभी गैर-एम्बेडेड लिनक्स सिस्टम पर)। ग्लिबेक मैनुअल में थोड़ी व्याख्या है

ध्यान दें कि /usr/include/linuxऔर /usr/include/asmवे हेडर होने चाहिए जो C लाइब्रेरी को संकलित करते समय उपयोग किए गए थे, न कि चलने वाले कर्नेल से हेडर। अन्यथा, यदि कुछ स्थिरांक या डेटा संरचनाएं बदल जाती हैं, तो संकलित कार्यक्रम और सी लाइब्रेरी के बीच असंगति होगी, जिसके परिणामस्वरूप दुर्घटना या खराब होने की संभावना है। (यदि हेडर्स C लाइब्रेरी से मेल खाते हैं, लेकिन C लाइब्रेरी कर्नेल से मेल नहीं खाती है, तो वास्तव में क्या होता है कि कर्नेल को एक स्थिर ABI रखने के लिए डिज़ाइन किया गया है और यह पता लगाना चाहिए कि यह एक अलग ABI के तहत कहा जाता है और तदनुसार syscall तर्कों की व्याख्या करता है। कर्नेल को वैसे भी संकलित कार्यक्रमों के लिए ऐसा करना चाहिए।)

मुझे याद है कि इस /usr/include/linuxमुद्दे पर कुछ समय पहले डेबियन और रेड हैट के बीच गर्म बहस हुई थी ; जाहिरा तौर पर प्रत्येक पक्ष अपनी स्थिति से चिपका हुआ है। (जहां तक ​​मैं इसे समझता हूं, डेबियन सही है, जैसा कि ऊपर बताया गया है।) डेबियन वर्तमान /usr/include/linuxमें linux-libc-devपैकेज में वितरित करता है और दोस्तों , जो कि कर्नेल स्रोतों से संकलित किया गया है लेकिन कर्नेल के साथ अपग्रेड नहीं किया गया है। कर्नेल हेडर संस्करण-विशिष्ट पैकेज में हैं जो linux-headers-2.6मेटापैकेज प्रदान करते हैं ; यह वह है जो आपको किसी विशेष कर्नेल संस्करण के लिए मॉड्यूल संकलित करने की आवश्यकता है।

जिस पैकेज की आपको तलाश है, वह सी लाइब्रेरी हेडर है। मुझे नहीं पता कि इसे क्या कहा जाता है, लेकिन आप इसका पता लगा सकते हैं yum provides /usr/include/sys/types.h


2
अंतिम बिट का उत्तर है glibc-headers
mattdm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.