उबंटू अपनी लाइब्रेरी फ़ाइलों को कहाँ संग्रहीत करता है?


18

मैं सी संकलन में उपयोग करने के लिए अपनी खुद की लाइब्रेरी जोड़ना चाहता हूं, लेकिन वास्तव में यह नहीं पता है कि ubuntu कहां संग्रहीत करता है।


5
यह / usr / lib & usr / में शामिल है
karthick87

मुझे मेरी लाइब्रेरी / usr मिली / जिसमें मुझे उन्हें डालने के साथ कैसे जाना चाहिए? क्या मुझे सिर्फ एक हेडर फ़ाइल और एसी फ़ाइल उसके पास रखनी चाहिए या क्या मुझे हेडर और फ़ंक्शन को एक .h फ़ाइल में एक साथ लिखना चाहिए?
david25

3
लाइब्रेरी और हेडर अलग-अलग चीजें हैं, / usr / इसमें लाइब्रेरी शामिल नहीं हैं, इसमें हेडर शामिल हैं जो लाइब्रेरी से उपलब्ध फ़ंक्शन / ऑब्जेक्ट की परिभाषा हैं। प्रश्न को सुधारना चाहिए, यह समझना मुश्किल है कि आप क्या हासिल करने की कोशिश कर रहे हैं।
जोओ पिंटो

जवाबों:


11

आपके प्रश्न के लिए आपकी टिप्पणियों के आधार पर, मुझे लगता है कि आप वास्तव में क्या पूछ रहे हैं "मैं अपने द्वारा लिखी गई कस्टम लाइब्रेरी कैसे स्थापित करूं और मुझे इसे कहां रखना चाहिए?"

सामान्य तौर पर, उपयोगकर्ता को मशीन पर दूसरों के लिए स्थानीय रूप से निर्मित चीजें / usr / स्थानीय पेड़ में डाल दी जाती हैं। हेडर फ़ाइल को / usr / लोकल / शामिल होना चाहिए। संकलित पुस्तकालय को / usr / स्थानीय / परिवाद में जाना चाहिए। .C फ़ाइल लाइब्रेरी का हिस्सा नहीं है, यह स्रोत का हिस्सा है और सामान्य रूप से अंतिम उपयोगकर्ता के उपयोग के लिए कुछ स्थापित नहीं है। आपको इन स्थानों में से किसी में भी फ़ाइल रखने के लिए रूट एक्सेस की आवश्यकता होगी।

लाइब्रेरी का निर्माण करने के लिए, आपको स्टैटिक या डायनेमिक (साझा) लाइब्रेरी चाहते हैं, तो आपको पहले निर्णय लेना होगा। साझा लाइब्रेरी बनाने के बारे में अधिक जानकारी http://www.inux.org.org/docs/ldp/howto/Program-Library-HOWTO/sared-lbooks.html पर साझा लाइब्रेरी बनाते हुए, अनुभाग 3.4 में देखी जा सकती है । (उन्होंने यह भी सिफारिश की है कि सामान कहां रखा जाए - अधिकांश डेवलपर्स की राय या तीन :-) होगी)


11

पुस्तकालय के आधार पर, उबंटू अपने पुस्तकालयों को मुख्य रूप से तीन स्थानों पर संग्रहीत करता है

  1. / lib
  2. / Usr / lib
  3. / Usr / स्थानीय / lib

निम्नलिखित फ़ाइल सिस्टम पदानुक्रम मानक से है

/ lib

/ Lib निर्देशिका में सिस्टम साझा करने और रूट फाइल सिस्टम में कमांड चलाने के लिए आवश्यक साझा लाइब्रेरी चित्र हैं, अर्थात। बायनेरिज़ द्वारा / बिन और / साइबिन में।

/ Usr / lib

/ usr / lib में ऑब्जेक्ट फ़ाइलें, लाइब्रेरीज़ और आंतरिक बायनेरीज़ शामिल हैं जिन्हें उपयोगकर्ताओं या शेल स्क्रिप्ट द्वारा सीधे निष्पादित करने का इरादा नहीं है। [22]

एप्लिकेशन एक एकल उपनिर्देशिका / usr / lib के तहत उपयोग कर सकते हैं। यदि कोई एप्लिकेशन उपनिर्देशिका का उपयोग करता है, तो अनुप्रयोग द्वारा विशेष रूप से उपयोग किए जाने वाले सभी आर्किटेक्चर-निर्भर डेटा को उस उपनिर्देशिका के भीतर रखा जाना चाहिए।

/ usr / स्थानीय / lib में स्थानीय पुस्तकालय शामिल हैं अर्थात इस प्रणाली के लिए एक विशिष्ट लेकिन मुझे FHS में / usr / स्थानीय / lib के संदर्भ नहीं मिल सकते हैं, इसमें केवल / usr / स्थानीय के लिए स्पष्टीकरण है।


2

उबंटू फाइलसिस्टम पदानुक्रम मानक ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ) का अनुसरण करता है , नियमित रूप से उपयोग किए जाने वाले पुस्तकालयों को / usr / lib के तहत संग्रहीत किया जाना चाहिए।

कृपया ध्यान दें कि पुस्तकालयों को विकसित करना / प्रबंधित करना कोई तुच्छ विषय नहीं है, आपको कुछ और विस्तृत दस्तावेज़ पढ़ने चाहिए, यहाँ एक अच्छा ट्यूटोरियल है: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html


0

आपको संकलक को बताना चाहिए, जहां वह आपकी लाइब्रेरी पा सकता है। माना जाता है, आपकी लाइब्रेरी का पथ "/path/to/lib/libfoo.a" है, आप अपने प्रोग्राम "hello.c" को इस तरह संकलित और लिंक कर सकते हैं:

gcc -L/path/to/lib -lfoo hello.c

यह उबंटू के लिए विशिष्ट नहीं है, वास्तव में मुझे पता है कि सभी सी-कंपाइलर उन झंडों का समर्थन करते हैं।


-2

उबंटू में वे पाए जाते हैं /usr/include


1
हैडर फाइलें अंदर हैं/usr/include। लाइब्रेरी के लिए वास्तविक बायनेरिज़ वहाँ संग्रहीत नहीं हैं। हेडरों को एक पुस्तकालय का हिस्सा माना जा सकता है, लेकिन उन्हें अलग से स्थापित किया जाना है, और उनका उपयोग उनकार्यक्रमोंको संकलित करने के लिए किया जाता है जो लाइब्रेरी का उपयोग करते हैं। एक बार लाइब्रेरी का उपयोग करने वाले प्रोग्राम को संकलित कर लिया गया है, उसे अब हेडर फ़ाइलों की आवश्यकता नहीं है या उनका उपयोग नहीं करना है।
एलिया कगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.