2012-11-21 46 views
6

मेरे पास दो निष्पादन योग्य हैं, दोनों एंड्रॉइड में चलाने के लिए संकलित क्रॉस। मैंने डिवाइस पर दोनों को एक ही निर्देशिका में रखा है। मैंने सभी साझा पुस्तकालयों को रखा है कि वे एक ही निर्देशिका में निर्भर हैं, जिसमें ld-linux.so.3 शामिल हैं। मैं का उपयोग करके निष्पादनयोग्य चलाएँ:"साझा ऑब्जेक्ट से सेगमेंट मैप करने में विफल" के संभावित कारण क्या हैं: ऑपरेशन की अनुमति नहीं है ", और डीबग कैसे करें?

ld-linux.so.3 --library-पथ/path/to/पुस्तकालयों

दोनों काम executable_name Android के पुराने संस्करणों पर जब किसी भी उपयोगकर्ता के रूप में चल रहा है। रूट के रूप में चल रहे हैं तो एंड्रॉइड के नवीनतम संस्करण पर दोनों काम। किसी भी उपयोगकर्ता के रूप में चलते समय एंड्रॉइड के नवीनतम संस्करण पर केवल एक ही काम करता है। इसके बजाय यह देता है:

साझा वस्तु से खंड को नहीं ढूंढ़ सकी: executable_name आपरेशन

की अनुमति नहीं मैं कैसे पता लगा सकते हैं कि क्या निष्पादन योग्य है कि नहीं चलेंगे साथ अलग है?

मैं ऑनलाइन एक बहुत पढ़ सकते हैं और ज्यादातर लोगों को है कि इस त्रुटि मिलती है, या तो:

ए) पुस्तकालयों वे पर निर्भर हैं या निष्पादन योग्य ही में से एक के लिए अनुमतियों को निष्पादित नहीं है।

या

बी) एक निर्देशिका है कि NOEXEC के रूप में रखा जाता है से भागने की कोशिश कर रहे हैं।

इनमें से दोनों मामले नहीं दिखते हैं। यह सभी पुस्तकालयों को पा सकता है और मैं स्वयं ही कोई पुस्तकालय लोड कर सकता हूं और देख सकता हूं कि यह अन्य चीजों को हल करने पर निर्भर है। साथ ही, मैं ब्याज की निर्देशिका से मूल स्क्रिप्ट चला सकता हूं।

एंड्रॉइड का नया संस्करण, जेली बीन, एक अलग लिनक्स कर्नेल संस्करण है और मुझे आश्चर्य है कि यह संबंधित है या नहीं।

क्या दे रहा है? मैं डीबग कैसे करूं?

+0

एक अलग तरह से (इनाम के साथ) में पूछे जाने पर यहां: http://stackoverflow.com/questions/13467951/issue-including-executable-with-android-application- जब-उपयोग-जेली-बीन – corbin

उत्तर

1

मुद्दा कैसे निष्पादनयोग्य संकलित किया गया था। उन्हें एक क्रॉस कंपाइलर के साथ संकलित करने की आवश्यकता थी जो नए हाथ उपकरणों का सही ढंग से समर्थित था। संकलक मैंने जेनरेट किए गए एक्जिक्यूटिव का उपयोग किया जो केवल बांह उपकरणों के सबसेट पर काम करेगा। मुद्दा एंड्रॉइड के विभिन्न संस्करणों के साथ नहीं था।

0

एंड्रॉइड 4.3 पर डिफ़ॉल्ट रूप से SELinux सक्षम है, हालांकि इसे "अनुमोदित" माना जाता है [0]। शायद आपके फोन विक्रेता ने अधिक प्रतिबंधक नियम जोड़े।

[0] https://source.android.com/devices/tech/security/se-linux.html

+0

यह समस्या जेली बीन के पहले संस्करण पर दिखाई दी, तो इस बदलाव से पहले। लेकिन, यह एक दिलचस्प पढ़ा है। मैंने 4.3 का उपयोग नहीं किया है। – corbin

2

मुझे यह त्रुटि एक अलग संदर्भ में थी। /tmp फ़ोल्डर का उपयोग करने का प्रयास करते समय किसी कारण से यह त्रुटि उत्पन्न करता है।

इस मैं बस का समाधान करने के लिए:

mkdir tmp 
export TMPDIR=`pwd`/tmp 
+0

** टीएमपीडीआईआर ** क्या है? –