2009-12-22 13 views
15

मेरे पास 32-बिट है। इसलिए बाइनरी-केवल लाइब्रेरी है और मुझे 64-बिट प्रोग्राम उत्पन्न करना है जो इसका उपयोग करता है। क्या इसे लपेटने या परिवर्तित करने का कोई तरीका है, इसलिए इसका उपयोग 64-बिट प्रोग्राम के साथ किया जा सकता है?32-बिट लाइब्रेरी को 64-बिट प्रोग्राम से लिंक करना

+0

मैं लाइब्रेरी कोड को 64 बिट लक्ष्यीकरण के पुन: संकलित करने का सुझाव देने जा रहा था, लेकिन इंप्रेशन प्राप्त करें कि आपके पास इसका स्रोत नहीं है ... मुझे संदेह है कि 64 बिट कोड 32 बिट तक 'थंक' हो सकता है .. शायद यह नीचे हो सकता है लिनक्स जीसीसी? लेकिन फिर फिर यह 'थंकिंग' Win95 की एक विशेषता थी (याद रखें?) 32 बिट कोड 16 बिट कोड कॉल कर रहा है ... क्या आपने 64 बिट डायनामिक लाइब्रेरी (.so) को संदर्भित करने और इसे चलाने के 64 बिट कोड को जोड़ने का प्रयास किया है? – t0mm13b

+0

आधुनिक 64 बिट ऑपरेटिंग सिस्टम में से कोई भी "थंकिंग" समतुल्य नहीं है। यह काम नहीं करेगा। –

उत्तर

27

नहीं। आप 64 बिट प्रोग्राम के अंदर सीधे 32 बिट कोड से लिंक नहीं कर सकते हैं।

सबसे अच्छा विकल्प 32 बिट (स्टैंडअलोन) प्रोग्राम संकलित करना है जो run on your 64bit platform (using ia32) कर सकता है, और उसके बाद अपने 64 बिट प्रोग्राम से संवाद करने के लिए इंटर-प्रोसेस संचार का एक रूप उपयोग करें।

+1

@Reed: फिर Win95 कैसे 32 बिट कोड से संक्रमण को प्रबंधित करता है 16 बिट ला ला थंकिंग '? क्या वह स्टैक पॉइंटर और रजिस्टरों के आसपास बदलने के लिए असेंबलर स्तर पर था? – t0mm13b

+6

ओएस ने इसे स्पष्ट रूप से संभाला, लेकिन ऐसा कुछ भी नहीं है जो इसे लिनक्स या आधुनिक 64 बिट विंडोज ऑपरेटिंग सिस्टम में अनुमति देता है, इसलिए आपको पोस्ट किए गए वर्कअराउंड का उपयोग करना होगा। –

+0

@Reed: मेरे प्रश्न का उत्तर देने के लिए धन्यवाद। :) – t0mm13b

3

यह संभव है, लेकिन दृश्यों के पीछे कुछ गंभीर जादू के बिना नहीं और आपको जवाब पसंद नहीं आएगा। या तो 32 बिट सीपीयू का अनुकरण करें (नहीं, मैं मजाक नहीं कर रहा हूं) या मुख्य प्रक्रिया को वापस 32 बिट पर स्विच करें। यद्यपि नकल धीमा हो सकता है। तकनीक के

This is a proof of concept

फिर प्रत्येक 32 बिट लाइब्रेरी से और उससे मेमोरी एक्सेस की तालिका रखें और उन्हें सिंक में रखें। सैद्धांतिक पूर्णता प्राप्त करना बहुत मुश्किल है, लेकिन कुछ व्यावहारिक होना बहुत आसान होना चाहिए, लेकिन बहुत कठिन होना चाहिए।

ज्यादातर मामलों में, मुझे दो प्रक्रियाओं पर विश्वास है और फिर दोनों के बीच आईपीसी वास्तव में सबसे आसान हो सकता है, जैसा कि सुझाव दिया गया है।

4

64-बिट कोड से 32-बिट प्लगइन चलाने के लिए आईपीसी का उपयोग करने के उदाहरण के लिए, ओपन सोर्स NSPluginWrapper पर देखें।

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

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