2011-05-08 21 views
19

जीसीसी मैनुअल में यह दिया गया है कि "सी मानक लाइब्रेरी स्वयं '/usr/lib/libc.a' में संग्रहीत है"। मेरे पास gcc स्थापित है, लेकिन कहा गया स्थान पर libc.a नहीं मिला। जानना उत्सुक है कि यह कहां स्थित है।सी मानक पुस्तकालय का स्थान

मुझे/usr/lib स्थान में कई .so फ़ाइलें मिलती हैं। वो क्या है?

+0

आप अपने पैकेज प्रबंधक पूछ की कोशिश की? –

+0

libc.so के बारे में क्या? – Mayank

+0

किस ऑपरेटिंग सिस्टम में? –

उत्तर

17

कुछ बातें:

  • जीसीसी और glibc दो अलग बातें हैं। जीसीसी संकलक है, glibc रनटाइम पुस्तकालय हैं। बहुत कुछ सब कुछ चलाने के लिए glibc की जरूरत है।
  • .a फ़ाइलों स्थिर पुस्तकालय हैं, .so साझा वस्तु का मतलब है और एक DLL
  • अधिकांश चीजें libc.a के खिलाफ लिंक नहीं की लिनक्स बराबर है, वे libc.so

आशा के खिलाफ लिंक है कि साफ करता है यह तुम्हारे लिए है। स्थान के लिए, यह लगभग निश्चित रूप से /usr/lib/libc.a और/या /usr/lib/libc.so में होने जा रहा है। जैसे मैंने कहा, एक भी अधिक आम है।

+0

क्या libc.so गतिशील रूप से जुड़ा हुआ है और libc.a स्थिर रूप से जुड़ा हुआ है? – devnull

+7

libc.so और libc.a दोनों समान कार्यक्षमता प्रदान करते हैं। अंतर यह है कि यदि आप libc.so के खिलाफ लिंक करते हैं, जब भी libc.so को अपग्रेड किया जाता है, तो आपके प्रोग्राम को अपग्रेड का कोई फायदा नहीं होता है। हालांकि अगर आप libc.a के खिलाफ लिंक करते हैं तो सभी कार्यक्षमता आपके प्रोग्राम में पैक की जाती है। Libc के लिए नए अपडेट आपके प्रोग्राम को अपडेट नहीं करेंगे, इसलिए इसे फिर से सम्मिलित करना होगा। –

+2

तो हाँ,। गतिशील रूप से जुड़ा हुआ एक है, और .a स्थिर रूप से जुड़ा हुआ है। –

2

centos 5,8

$ ls -l /usr/lib/libc.a 
-rw-r--r-- 1 root root 2442786 Apr 8 2010 /usr/lib/libc.a 

$ rpm -qf /usr/lib/libc.a 
glibc-devel-2.3.4-2.43.el4_8.3 

तुम भी है पर glibc-devel पैकेज RedHat वितरण के तहत स्थापित किया है।

3

यदि आप लिनक्स (आरपीएम) में हैं तो आपको rpm -ql glibc और rpm -ql glibc-devel के साथ स्थापित ग्लिब का स्थान प्राप्त होगा।

locate libc.a आपको स्थान मिलेगा। rpm -qf /usr/lib/libc.a

यहाँ rpm -qi इन पैकेजों

glibc-devel के बारे में बताने के लिए है:: और जहां यह करने के लिए आता है से देखने के लिए

glibc-devel संकुल वस्तु शामिल फ़ाइलें आवश्यक उन कार्यक्रमों के विकास के लिए जो मानक सी पुस्तकालयों का उपयोग करते हैं (जो लगभग सभी कार्यक्रमों द्वारा उपयोग किए जाते हैं)। यदि आप ऐसे प्रोग्राम विकसित कर रहे हैं जो मानक सी पुस्तकालयों का उपयोग करेंगे, तो निष्पादन योग्य बनाने के लिए आपके सिस्टम को मानक ऑब्जेक्ट फ़ाइलें उपलब्ध कराने की आवश्यकता है। स्थापित glibc-devel यदि आप प्रोग्राम जो मानक सी पुस्तकालयों

का उपयोग करेगा विकसित करने के लिए जा रहे हैं

glibc:

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

2

आपको अलग से स्थिर पुस्तकालयों के लिए पैकेज स्थापित करने की आवश्यकता: glibc-static.i686

10

आप libc.a के लिए देख रहे हैं:

$ gcc --print-file-name=libc.a 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libc.a 
+0

धन्यवाद, मैं इसे लंबे समय तक/usr के लिए ढूंढने की कोशिश कर रहा था लेकिन मुझे नहीं मिला। आपके आदेश ने बहुत मदद की। –

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