मेरे पास एक प्रोग्राम है (विशेष रूप से SO DevDays Countdown app challenge के लिए मेरी प्रविष्टि) जो कई गतिशील पुस्तकालयों, अर्थात् libSDL, libSDL_ttf, और अन्य पर निर्भर करता है। मेरे पास मैकपॉर्ट्स के माध्यम से /opt/local/lib
के तहत इन पुस्तकालयों को स्थापित किया गया है, और कई लोगों ने इन्हें स्थापित नहीं किया होगा (और कुछ ने उन्हें स्थापित किया हो सकता है, लेकिन उस स्थान पर नहीं)।आश्रित पुस्तकालयों के साथ मैक ओएस एक्स कैसे वितरित करें?
मैं अपने प्रोग्राम को कैसे वितरित करूं ताकि इन पुस्तकालयों के बिना लोग इसे बाहर-द-बॉक्स चला सकें? जाहिर है, मुझे विभिन्न .dylib
फ़ाइलों को वितरित करना होगा, लेकिन ऐसा करना अपर्याप्त है। गतिशील लोडर अभी भी उन स्थानों पर स्थापित पुस्तकालयों की तलाश करता है जिन्हें मैंने इंस्टॉल किया है। निष्पादन योग्य की वर्तमान निर्देशिका में देखने के लिए गतिशील लोडर को बताने का कोई तरीका है, जैसे कि विंडोज़ डीएलएल के साथ क्या करता है? लोगों को किसी भी पर्यावरण चर को संशोधित नहीं करना चाहिए (उदा। DYLD_LIBRARY_PATH
), फिर से मैं इसे बॉक्स के बाहर काम करना चाहता हूं।
इसके बारे में सोचने के बाद, मुझे लगता है कि मैं वितरण के लिए स्थिर लिंकिंग के साथ जा रहा हूं। यदि मैं गतिशील पुस्तकालयों को वैसे भी वितरित करने जा रहा हूं, जो उन्हें उपयोग करने के कई उद्देश्यों को हरा देता है, तो मैं गतिशील लोडर से निपटने के दर्द से भी बच सकता हूं। –
4. उपरोक्त विकल्प 2 का उपयोग करके, अपने .app बंडल (.dmg फ़ाइल) के अंदर ढांचे को रखें और install_name_tool के साथ पथ निष्पादन योग्य आवश्यकताओं को बदलें। यहां कुछ उदाहरण दिए गए हैं कि install_name_tool का उपयोग कैसे किया जाता है: http://qt-project.org/doc/qt-4.8/deployment-mac.html। डायट्रिच, क्या आप इसे अपने उत्तर में शामिल कर सकते हैं? –
@ मिलानबाबुस्कोव: ऐसा लगता है कि यह पहले से ही नीचे दिए गए उत्तर में शामिल है। मुझे जानकारी डुप्लिकेट करने की कोई आवश्यकता नहीं है। –