मैं एक ऐसा एप्लीकेशन विकसित कर रहा हूं जो जीस्ट्रीमर लाइब्रेरी का उपयोग करता हो। तैनाती को कम करने के लिए मैं स्थानीय बंडल में सभी जीस्ट्रीमर पुस्तकालयों को इकट्ठा करना चाहता हूं। इसके लिए मैं एक छोटे से स्क्रिप्ट जो निम्नलिखित करता लिखा है:गतिशील पुस्तकालयों पर निर्भर अनुप्रयोग को कैसे तैनात किया जाए?
- रिकर्सिवली पार निर्भरता (
otool -L
का प्रयोग करके) - एक स्थानीय निर्देशिका
- सभी निर्भरता रास्तों @executable_path के सापेक्ष बनाने के लिए प्रतिलिपि सभी निर्भरता (
install_name_tool
का उपयोग कर)
(आप रुचि रखते हैं, तो आप Ruby script पर एक नज़र हो सकता है।)
gst_init
फोन पर हालांकि, मैं अब दिखाई दे रही है क्रम त्रुटियों: अगर मैं स्थानीय पुस्तकालयों का उपयोग
(process:22843): GLib-GObject-CRITICAL **: gtype.c:2458: initialization assertion failed, use g_type_init() prior to this function
(process:22843): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0' failed
इन त्रुटियों को ही होते हैं।
क्या install_name_tool का उपयोग करने पर कुछ 'सामान्य नुकसान' हैं? क्या किसी को पता है कि मैं गलत क्या कर सकता हूं? अगर आपको कुछ विवरण जानने की ज़रूरत है तो पूछने के लिए स्वतंत्र महसूस करें।
- निर्भर पुस्तकालयों के लिए मैं अब केवल dylib पथ बदल सकते हैं और न आईडी (केवल
install_name_tool -change
और नहींinstall_name_tool -id
का उपयोग करें):अद्यतन
मैं कुछ चीजें बदल दिया है। - मुख्य पुस्तकालय के लिए मैंने निष्पादन योग्य पथ (
@executable_name/components/Video.dylib
) से संबंधित आईडी मान सेट किया है।
ये दो परिवर्तन इसे काम करते हैं। हालांकि यह अभी तक मुझे स्पष्ट नहीं है कि यह क्यों काम करता है। मुझे "आईडी" संपत्ति के अर्थ को समझने में कुछ परेशानी है। यह पथनाम के रूप में पहचानकर्ता प्रतीत होता है। आश्रित पुस्तकालयों के लिए इसे क्यों बदलना रनटाइम त्रुटियों का कारण बनता है? मैं कुछ और प्रयोगों के साथ उन सवालों के जवाब खोजने का प्रयास करूंगा ...
क्या यह हो सकता है कि आप संबंधित निर्भरताओं के लिए दुर्घटना से लोड ऑर्डर को प्रभावित कर सकें? –
@gf: मुझे ऐसा नहीं लगता है, लेकिन मैं इसे ध्यान में रखूंगा। मैंने कुछ प्रगति की है, यदि आप रुचि रखते हैं तो संपादन की जांच करें। – StackedCrooked
क्या आप एक .app बंडल नहीं बना रहे हैं? –