2011-06-05 12 views
13

मै मैक ओएस एक्स पर मानक सी लाइब्रेरी खोजने की कोशिश कर रहा हूं। मैंने पथों की कोशिश की है: "/usr/lib/libc.a" या "/usr/lib/libm.a", लेकिन ऐसा कोई नहीं है सिस्टम पर फाइलें। क्या आप मुझे बता सकते हैं कि इसे कहां मिलना है?मैक ओएस एक्स पर मानक सी लाइब्रेरी कहां है?

तो मैं एक Linux मशीन पर टर्मिनल का इस्तेमाल किया और इस तरह कमांड चलाएँ:

ar t /usr/lib/libc.a 

यह ओ फ़ाइलें और उन ओ फ़ाइलों की एक सूची देता है इस तरह हैं:

svc.o 
xdr.o 
... 

क्या हैं इन फ़ाइलों का अर्थ? उन्हें कहां मिलना है?

उत्तर

15

मानक पुस्तकालय ओएस एक्स

+0

ऐसा लग रहा है '/ usr/lib/libSystem.dylib' सिर्फ'/usr/lib/libSystem.B.dylib' करने के लिए एक सिमलिंक है, 10.12 के रूप में। – GDP2

+0

@ जीडीपी 2: हां, 'बी' वर्तमान संस्करण है; लिंक्स स्क्रिप्ट * आमतौर पर * libSystem.dylib' ('-lSystem') के खिलाफ लिंक होना चाहिए। –

+0

हां, शायद पिछली संगतता और ऐसे में मदद करता है। – GDP2

6

पर libSystem.dylib का हिस्सा है ऐसा लगता है कि यह है की तरह:

/usr/lib/libSystem.B.dylib 

मेरी मशीन (MacOS X 10.6.7) पर।

3

आपके प्रश्न के दूसरे भाग का उत्तर देने के लिए, ओएस एक्स आमतौर पर स्थिर पुस्तकालयों (.a) का उपयोग नहीं करता है। स्थिर पुस्तकालयों संग्रह फ़ाइलों में रखा जाता है, इसलिए .a: जैसे, वहाँ कोई libc.a (या libSystem.a) ओएस एक्स

3

पर अपने दूसरे प्रश्न का उत्तर देने है। इस प्रकार वे केवल फाइलों के समूह के लिए कंटेनर हैं, जैसे ज़िप, टैर, आरएआर, आदि किसी भी संपीड़न से कम। ar द्वारा सूचीबद्ध उन फ़ाइलों (संग्रह के लिए खड़ा है) उपयोगिता संग्रह में पैक की गई मूल फ़ाइलें हैं। आप इसे अनपैक कर सकते हैं और मूल फाइलें प्राप्त कर सकते हैं।

स्टेटिक लाइब्रेरी गतिशील पुस्तकालयों के विपरीत हैं। एक स्थिर लाइब्रेरी की सामग्री लिंकर द्वारा निकाली जाती है और लिंकिंग पर आपके प्रोग्राम में शामिल होती है, जैसे कि वे आपके प्रोग्राम की निर्माण प्रक्रिया के अन्य संकलन चरणों के परिणाम थे।

गतिशील पुस्तकालयों OTOH सिर्फ वस्तु फ़ाइलों के अभिलेखागार नहीं हैं, लेकिन वे अपने आप में निष्पादनयोग्य लिंक किए गए हैं और गतिशील लिंकर अंतरिक्ष जोड़ने प्रक्रियाओं में संबोधित उन्हें नक्शे और मैप किए गए पते से मेल खाना प्रतीक तालिकाओं समायोजित करता है।

1

दरअसल यह /usr/lib/system/libsystem_c.dylib पर मौजूद है।

आप सत्यापित कर सकते हैं कि साथ: $ nm -gU /usr/lib/system/libsystem_c.dylib

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