2010-03-10 19 views
6

मेरे पास एक ऐसा एप्लिकेशन है जो ओएस एक्स के पायथन.फ्रेमवर्क के खिलाफ लिंक करता है। चूंकि हिम तेंदुए को पायथन 2.6 में अपग्रेड कर दिया गया है, इसलिए ढांचे में अब 2.4, 2.5 और 2.6 के संस्करण हैं। मेरा प्रोग्राम 2.6 के खिलाफ लिंक नहीं करना प्रतीत होता है, हालांकि, और जब मैं नए पायथन रनटाइम से सुविधाओं का उपयोग करता हूं और इसका उपयोग करता हूं तो यह त्रुटियों का कारण बनता है।एक्सकोड में एक विशिष्ट ढांचे संस्करण से कैसे लिंक करें?

मुझे पता है कि मैं पोस्ट-बिल्ड चरण में लिंक बदलने के लिए बस install_name_tool का उपयोग कर सकता हूं, लेकिन क्या यह कहने का कोई तरीका है कि निर्माण के दौरान कहां लिंक करना है? एक बहुत आम उपयोग मामले की तरह लगता है।

उत्तर

2

मैंने यह कोशिश नहीं की है, लेकिन मेरा मानना ​​है कि यह काम करेगा। /System/Library/Frameworks/Python.framework/2.5/ तो "-

1) अपने Xcode प्रोजेक्ट करने के लिए ढांचा न जोड़ें

2) इसके बजाय, पूर्ण पथ पुस्तकालय के लिए" OTHER_LINKER_FLAGS "में उपयोग पायथन "

3) आप फ्रेमवर्क खोज पथ को" /System/Library/Frameworks/Python.framework/2.5/ "पर भी सेट करना चाहते हैं और"/सिस्टम/लाइब्रेरी/फ्रेमवर्क/पायथन। फ्रेमवर्क/2.5/हेडर "

हालांकि, जो कुछ भी कहा गया है, वह आपको ऐप्पल द्वारा किए गए किसी भी बदलाव के लिए कमजोर छोड़ देगा। उदाहरण के लिए, अगर वे बाद में ढांचे से 2.5 हटा दें तो सबकुछ टूट जाएगा। पाइथन के वर्तमान संस्करण के साथ काम करने के लिए बस अपने ऐप को अपडेट करना एक बेहतर विचार होगा।

+0

ठीक है, मैं * पायथन के नए संस्करण से लिंक करना चाहता हूं। समस्या यह है कि मेरा प्रोग्राम केवल 2.5 संस्करणों के साथ लिंक करना चाहता है, यहां तक ​​कि शामिल और lib पथ सेट के साथ भी। मैं इस तथ्य के बाद इसे ठीक कर सकता हूं, लेकिन यह एक कड़वाहट की तरह लगता है। – SJML

+0

यह सुझाव पुराने ढांचे को जोड़ने के लिए काम करता है (उदाहरण के लिए, यदि आप 10.7 पर पायथन.फ्रेमवर्क से लिंक करते हैं, तो ऐप 10.6 पर लोड नहीं होगा (भले ही यह बाइनरी बनाने के लिए एक वैध विधि है जो जानता है कि कैसे पता लगाया जाए और कमजोर लिंकिंग के माध्यम से 10.7 और 10.6 से फ़ंक्शंस का उपयोग करें)। हालांकि, एक्सकोड 4 में, मैंने मैन्युअल रूप से लिंक चरण में लाइब्रेरी निर्दिष्ट की है और यह ठीक काम करता है (जैसा कि OTHER_LINKER_FLAGS के साथ करने के विपरीत है) – gaige

1

मुझे यह विशिष्ट समस्या भी थी, और निर्माण में पाइथन फ्रेमवर्क 2.6 प्राप्त करने का कोई तरीका नहीं मिला।

मुझे काम करने के लिए OTHER_LINKER_FLAGS दृष्टिकोण नहीं मिल सका, हां।

# 
# Force the required version of Python to be 2.6 
# dvb10.12.01 

install_name_tool \ 
    -change \ 
     /System/Library/Frameworks/Python.framework/Versions/2.5/Python \ 
     /System/Library/Frameworks/Python.framework/Versions/2.6/Python \ 
    $TARGET_BUILD_DIR/omino_python.plugin/Contents/MacOS/omino_python 

बस grepping के लिए वहाँ बाहर डालने:

तो, SJML तरह का सुझाव दिया है, मैं इतना की तरह एक पोस्ट का निर्माण कदम का इस्तेमाल किया। :)

संबंधित मुद्दे