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


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


13
2017-12-15 09:41


मूल


यह स्टोर करता है / Usr / lib और / Usr / शामिल - karthick87
मुझे अपनी लाइब्रेरी में / usr / मिला / मुझे शामिल करने के साथ कैसे जाना चाहिए? क्या मुझे सिर्फ एक हेडर फ़ाइल और उसके पास एक सी फाइल डालना चाहिए या क्या मुझे हेडर और फ़ंक्शन को एक .h फ़ाइल में एक साथ लिखना चाहिए? - david25
पुस्तकालयों और शीर्षलेख अलग-अलग चीजें हैं, / usr / include में पुस्तकालय शामिल नहीं हैं, इसमें हेडर शामिल हैं जो पुस्तकालयों से उपलब्ध कार्यों / वस्तुओं की परिभाषाएं हैं। प्रश्न में सुधार किया जाना चाहिए, यह समझना मुश्किल है कि आप क्या हासिल करने की कोशिश कर रहे हैं। - João Pinto


जवाब:


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

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

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


8
2017-12-15 14:39





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

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

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

/ lib

/ Lib निर्देशिका में वे शामिल हैं   साझा पुस्तकालय छवियों को बूट करने के लिए आवश्यक है   सिस्टम और कमांड को चलाएं   रूट फाइल सिस्टम, यानी। में बाइनरी द्वारा   / बिन और / sbin।

/ Usr / lib

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

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

/ Usr / स्थानीय / lib स्थानीय पुस्तकालयों में i.e इस प्रणाली के लिए एक विशिष्ट है लेकिन मुझे एफएचएस में / usr / local / lib के संदर्भ नहीं मिल रहे हैं, इसमें केवल / usr / local के लिए स्पष्टीकरण शामिल है।


8
2017-12-15 09:49





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

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


2
2017-12-15 09:49





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

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

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


0
2017-12-15 09:54





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


-2
2017-08-30 15:02



हैडर फ़ाइलें में हैं /usr/include। पुस्तकालय के लिए वास्तविक बाइनरी वहां संग्रहित नहीं हैं। शीर्षलेखों को लाइब्रेरी का हिस्सा माना जा सकता है, लेकिन उन्हें अलग से स्थापित किया जाना चाहिए, और उनका उपयोग किया जाता है संकलन प्रोग्राम जो लाइब्रेरी का उपयोग करते हैं। एक बार पुस्तकालय का उपयोग करने वाला प्रोग्राम संकलित हो गया है, इसे अब हेडर फ़ाइलों की आवश्यकता या उपयोग करने की आवश्यकता नहीं है। - Eliah Kagan