2012-07-12 23 views
17

मैं सी मानक पुस्तकालयों के स्रोत कोड की खोज कर रहा था। इसका मतलब यह है कि, उदाहरण के लिए, कॉस, एबीएस, प्रिंटफ, स्कैनफ, फॉपेन, और अन्य सभी मानक सी फ़ंक्शंस कैसे लिखे गए हैं, मेरा मतलब है कि उनका स्रोत कोड देखना है।जीएलबीबीसी क्या है? इसका क्या उपयोग है?

तो इसके लिए खोज करते समय, मैं जीएलबीबीसी के साथ आया, लेकिन मुझे नहीं पता कि यह वास्तव में क्या है। यह जीएनयू सी लाइब्रेरी है, और इसमें कुछ स्रोत कोड हैं, लेकिन वे वास्तव में क्या हैं, क्या वे मानक कार्यों का स्रोत कोड हैं या वे कुछ और हैं? और इसके लिए क्या उपयोग किया जाता है?

+2

[जीएनयू सी लाइब्रेरी] (http: //en.wikipedia।संगठन/विकी/ग्लिब) - यह विकी राज्यों के रूप में है, जीएनयू के सी मानक पुस्तकालय के कार्यान्वयन (अतिरिक्त सामान जो जीएनयू कार्यान्वयन के लिए विशिष्ट है)। – birryree

+12

वास्तव में? इस प्रश्न के लिए [टैग] पर माउस को पकड़कर आपको जवाब मिलेगा। आपने हाल ही में एक [बहुत ही समान प्रश्न] (http://stackoverflow.com/questions/9672006/where-can-i-find-the-source-code-for-all-the-c- मानक- पुस्तकालय) से पूछा। –

उत्तर

33

इसका मानक मानक सी लाइब्रेरी सी मानकों में वर्णित कुछ अतिरिक्त उपयोगी सामान जो सख्ती से मानक नहीं हैं लेकिन अक्सर उपयोग किए जाते हैं।

इसका मुख्य सामग्री हैं:

1) सी पुस्तकालय एएनएसआई, c99, C11 मानकों में वर्णित। इसमें मैक्रोज़, प्रतीकों, फ़ंक्शन कार्यान्वयन इत्यादि शामिल हैं (printf(), malloc() आदि)

2) POSIX मानक लाइब्रेरी। सिस्टम कॉल के "उपयोगकर्तालैंड" गोंद। (ओपन(), पढ़ा() इत्यादि। असल में ग्लिबैक सिस्टम कॉल को "कार्यान्वित नहीं करता" है। कर्नेल करता है। लेकिन ग्लिबक कर्नेल द्वारा प्रदान की जाने वाली सेवाओं के लिए उपयोगकर्ता भूमि इंटरफ़ेस प्रदान करता है ताकि उपयोगकर्ता एप्लिकेशन सामान्य की तरह सिस्टम कॉल का उपयोग कर सके समारोह

3) कुछ गैर मानक लेकिन उपयोगी सामान भी।

"बल प्रयोग, स्रोत पढ़ें" (जब मैं glibc में malloc.c के माध्यम से देखा मैं हाल ही में बहुत प्रबुद्ध था)

$git clone git://sourceware.org/git/glibc.git 

1

हां, यह मानक पुस्तकालय कार्यों का कार्यान्वयन है।

अधिक विशेष रूप से, यह सभी जीएनयू सिस्टम के लिए कार्यान्वयन है और लगभग सभी * एनआईक्स सिस्टम जो लिनक्स कर्नेल का उपयोग करते हैं।

7

मानक के कई कार्यान्वयन कर रहे हैं। ग्लिबक कार्यान्वयन है जो अधिकांश लिनक्स उपयोग करते हैं, लेकिन अन्य भी हैं। ग्लिबैक में ग्लू फ़ंक्शन भी शामिल हैं (उदासिक्स राज्यों के रूप में) जो कर्नेल में कूदने के लिए दृश्य सेट करता है (सिस्टम कॉल के रूप में भी जाना जाता है)। ग्लिब के कई 'फ़ंक्शन' वास्तविक काम नहीं करते हैं बल्कि केवल कर्नेल को ही प्रतिनिधि करते हैं।

ग्लिब के स्रोत को पढ़ने के लिए, बस इसके लिए Google। असंख्य साइटें हैं जो इसे ले जाती हैं, और कई भिन्नताएं भी हैं।

विंडोज माइक्रोसॉफ्ट के अपने कार्यान्वयन का उपयोग करता है, जिसे मुझे विश्वास है कि इसे एमएसवीसीआर.डीएलएल कहा जाता है। मुझे संदेह है कि आपको उस पुस्तकालय में कहीं भी स्रोत कोड मिलेगा। यह भी ध्यान रखें कि कुछ फ़ंक्शन जो लिनक्स हैकर 'मानक' के रूप में सोच सकते हैं, बस विंडोज (विशेष रूप से फोर्क) पर मौजूद नहीं हैं। विपरीत भी सही है।

अन्य सिस्टमों का अपना स्वयं का libc होगा।

+2

माइक्रोसॉफ्ट विजुअल स्टूडियो के साथ सी रनटाइम के लिए स्रोत कोड भेजता है (यहां तक ​​कि मुक्त एक्सप्रेस संस्करण के साथ भी, मुझे विश्वास है)। हालांकि, यह कुछ कारणों से * फ्लोटिंग पॉइंट रूटीन (या कम से कम एक उचित हिस्सा) में स्रोत शामिल नहीं करता है। हो सकता है कि वे किसी तृतीय पक्ष से लाइसेंस प्राप्त हो जाएं जो स्रोत वितरण की अनुमति नहीं दे सकता है? मुझे आश्चर्य होगा अगर एमएस ने उन्हें रनटाइम के अन्य हिस्सों की तुलना में आईपी का एक और महत्वपूर्ण टुकड़ा माना। –

6

ग्लिबैक पैकेज में मानक पुस्तकालय शामिल हैं जिनका उपयोग सिस्टम पर कई प्रोग्रामों द्वारा किया जाता है। डिस्क स्पेस और मेमोरी को बचाने के लिए, साथ ही अपग्रेडिंग को आसान बनाने के लिए, सामान्य सिस्टम कोड एक ही स्थान पर है और प्रोग्राम्स के बीच साझा किया जाता है। इस विशेष पैकेज में साझा पुस्तकालयों के सबसे महत्वपूर्ण सेट हैं: मानक सी लाइब्रेरी और मानक गणित पुस्तकालय। इन दो पुस्तकालयों के बिना, एक लिनक्स सिस्टम काम नहीं करेगा। Glibc पैकेज में राष्ट्रीय भाषा (लोकेल) समर्थन भी शामिल है।