2012-09-07 18 views
5

जब पुस्तकालयों को मैन्युअल रूप से बनाने के लिए टर्मिनल का उपयोग करने की बात आती है और दुर्भाग्य से मुझे बहुत अधिक अनुभव नहीं होता है और मैं यहां थोड़ा फंस गया हूं।मैक ओएस पर .a फाइलें (स्थिर पुस्तकालय) बनाने के लिए आप libtool का उपयोग कैसे करते हैं?

मैंने उद्देश्य-सी के लिए एक लाइब्रेरी डाउनलोड की है जो मेकफ़ाइल और इस तरह के साथ आया था।

मैं देख सकता हूँ फ़ोल्डर भी एक निष्पादन "libtool" कहा जाता है फ़ाइल है कि, मैं कुछ खोज किया था और मुझे लगता है कि इस कार्यक्रम मैं आवश्यक .a फ़ाइलें बनाने के लिए उपयोग करने के लिए है है? दुर्भाग्यवश, मुझे वास्तव में काम करने लगने के लिए कोई उपयोगी लेख नहीं मिला।

पुस्तकालय के लिए फ़ोल्डर कुछ .sh फ़ाइलें, .pc फ़ाइलों और भी कुछ .la फ़ाइलें हैं, लेकिन मैं का कौन सा मैं libtool को इनपुट के रूप में उपयोग करने के लिए एक सा अनिश्चित हूँ उन्हें .a फ़ाइल में संकलित करने के लिए प्रोग्राम।

तो मेरे सवाल का क्या फ़ाइलों को आप libtool में इनपुट के लिए है उन्हें आवश्यक .a फ़ाइल में संकलित करने के लिए हैं? और आप इसे पूरा करने के लिए वास्तव में किस आदेश का उपयोग करते हैं?

आप सभी अपने समय के लिए धन्यवाद :)

उत्तर

8

पहले स्थिर पुस्तकालयों के लिए एक छोटे से परिचय:

Unix वातावरण (मैक OSX और लिनक्स भी तरह) में स्टेटिक पुस्तकालय हैं वास्तव में सिर्फ वस्तु फ़ाइलों का एक संग्रह ar कमांड लाइन प्रोग्राम द्वारा बनाया गया।

.a एक्सटेंशन यही है: पुरालेख।

किसी वस्तु फाइलों के साथ एक स्थिर पुस्तकालय बनाने के लिए आप इस तरह आदेश का उपयोग कर सकते हैं:

ar crv libmy_library.a objectfile1.o objectfile2.o 

अपने वास्तविक प्रश्न का सवाल है, libtool, makefile से स्वचालित रूप से बुलाया जाना चाहिए पुस्तकालय बनाने, जो फ़ाइल .la में समाप्त हो रही है। हालांकि, यह वास्तविक पुस्तकालय नहीं है, वास्तविक पुस्तकालय एक छिपी हुई निर्देशिका में है। आप इसे कर कर पा सकते हैं उदा।

find . -name '*.a' 

लेकिन जैसे मैंने कहा, makefile पहले से ही सब कुछ का ख्याल है, जब आप जैसे कर सही जगह पर सही पुस्तकालय स्थापित करने सहित लेना चाहिए make install

libtool के बारे में जानकारी के लिए, this site देखें।

+0

कूल, अतिरिक्त जानकारी के लिए भी धन्यवाद! बहुत उपयोगी :) और हाँ मुझे पता चला कि मेकफ़ाइल वास्तव में पुस्तकालयों का निर्माण करता था, बस एक ही फ़ोल्डर में नहीं;) वे फ़ाइल सिस्टम के लोकेल फ़ोल्डर में बनाए गए थे। सहायता के लिए धनयवाद :) – CodingBeagle