2012-02-12 26 views
5

एक प्रोजेक्ट जो मैं काम कर रहा हूं, एक गैर मानक वितरण प्रणाली का उपयोग करता है, जो आंतरिक रूप से निर्भरता पुस्तकालयों को डाउनलोड और संकलित करता है। यह क्रॉक लॉन्च करता है, प्रत्येक लाइब्रेरी के लिए, configure स्क्रिप्ट को संकलन प्रणाली की आंतरिक निर्देशिका उपसर्ग के रूप में दिया जाता है। फिर यह make और make install चलाता है, फिर यह lib/<mylib>.a फ़ाइल के साथ स्थापित निर्देशिका खोजकर सामग्री को सत्यापित करता है। यह अंतिम कदम विफल रहता है।64-बिट OpenSuse वितरण पर लिब निर्देशिका

क्या हो रहा है यह समझने की कोशिश कर रहा है, मैंने अपने द्वारा यादृच्छिक पुस्तकालयों की एक जोड़ी संकलित की, जिसमें एक लेखक भी शामिल है। मैंने देखा कि मेरे वितरण (ओपनएसयूएसई, 64 बिट) के तहत इंस्टॉलिंग पथ /lib के साथ पॉप्युलेट नहीं किया गया है, लेकिन इसके बजाय /lib64 के साथ।

यह स्पष्ट है कि यह वितरण की एक सेटिंग है, और मुझे पूरा यकीन है कि यह सेटिंग ऑटोोटूल की कॉन्फ़िगरेशन से संबंधित है।

क्या इस व्यवहार को बदलने का कोई तरीका है, वैकल्पिक रूप से, सिस्टम से इस जानकारी को पढ़ने के लिए (ताकि मैं ऊपर उल्लिखित क्रॉक को पैच कर सकूं)?

आपकी मदद

अद्यतन के लिए धन्यवाद: मैं configure में --libdir ध्वज के बारे में सीखा है, इसलिए मुझे लगता है कि मैं अपने इस समस्या का समाधान कर सकते हैं। फिर भी मैं जानना चाहता हूं कि वितरण से पूछताछ से किसी भी तरह से इस विवरण को जानने का कोई तरीका है (उदा। कुछ कॉन्फ़िगरेशन फ़ाइल पढ़ें)।

+0

सिस्टम पर ऑटोकॉन्फ़ के साथ इसका कोई लेना-देना नहीं है, क्योंकि आप ऑटोकॉन्फ़ नहीं चला रहे हैं। –

+0

@ विलियम पर्ससेल: मैं नहीं हूं, लेकिन मैं 'कॉन्फ़िगरेशन' स्क्रिप्ट चला रहा हूं। मेरा अनुमान है कि 'कॉन्फ़िगरेशन' आधारित संकलन प्रणाली ऑपरेटिंग सिस्टम से कुछ कॉन्फ़िगरेशन पढ़ सकती है (उदाहरण के लिए '/ etc/'में कुछ फ़ाइल) यह निर्धारित करने के लिए कि ओएस को पुस्तकालयों को कहां से उम्मीद की जा सकती है। – Dacav

+0

यदि कॉन्फ़िगर स्क्रिप्ट/etc/में देख रही है, तो यह पैकेज में एक बग है। मैंने आपके द्वारा वर्णित व्यवहार को कभी नहीं देखा है। ऐसा हो सकता है कि आप ऑटोकॉन्फ़ के पैच किए गए संस्करण के साथ कॉन्फ़िगर स्क्रिप्ट उत्पन्न कर रहे हैं। क्या कॉन्फ़िगर स्क्रिप्ट में "libdir = '$ {exec_prefix}/lib'" पंक्ति होती है? –

उत्तर

5

कॉन्फ़िगर स्क्रिप्ट को मशीन के बारे में धारणाएं बनाने की कोशिश नहीं करनी चाहिए, या $ {exec_prefix}/lib के अलावा अन्य स्थानों में पुस्तकालयों को स्थापित करने का प्रयास नहीं करना चाहिए जब तक उपयोगकर्ता स्पष्ट रूप से $ libdir के लिए एक अलग स्थान का अनुरोध नहीं करता। एक तंत्र जिसके द्वारा उपयोगकर्ता स्पष्ट रूप से वैकल्पिक स्थान का अनुरोध कर सकता है वह config.site फ़ाइल के माध्यम से होता है। अगर फ़ाइल $ {prefix} /share/config.site मौजूद है, तो यह $ libdir के लिए वैकल्पिक मान निर्दिष्ट कर सकता है, जिससे उपयोगकर्ता अनजाने में वैकल्पिक स्थापना स्थान को स्पष्ट रूप से निर्दिष्ट कर सकता है।

3

विलियम पर्सेल द्वारा यह एक अच्छा जवाब है। मैं सिर्फ जोड़ना चाहता था, क्योंकि यह प्रश्न विशेष रूप से openSUSE से संबंधित है, कि openSUSE config.site नामक फ़ाइल इंस्टॉल नहीं करता है। समतुल्य फ़ाइल वास्तव में में site-config आरपीएम के माध्यम से स्थापित की गई है, और फिर /etc/profile/site.{c,}sh के माध्यम से सक्रिय की गई है जो CONFIG_SITE पर्यावरण चर को इस फ़ाइल को इंगित करने के लिए निर्यात करती है। वह चर honoured by autoconf है, जैसा कि आप पहले ही देख चुके हैं।