2012-08-29 13 views
6

उन्नयन लोड नहीं कर सकता मैं कुछ दुर्घटना रिपोर्ट प्राप्त करने के (उनमें से अधिकांश एंड्रॉयड 4.03 के साथ आकाशगंगा SII हैं)एंड्रॉयड NDK 8b NDK 8b को पुस्तकालय

java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1286]: 1836 cannot locate '__gnu_thumb1_case_uqi'... 
at java.lang.Runtime.loadLibrary(Runtime.java:370) 
at java.lang.System.loadLibrary(System.java:535) 
at com.iuculano.fplayer.SDLActivity.void onCreate(android.os.Bundle)(SourceFile:324) 
at android.app.Activity.performCreate(Activity.java:4465) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
at android.app.ActivityThread.access$600(ActivityThread.java:127) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4507) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
at dalvik.system.NativeStart.main(Native Method) 

अपवाद एक सरल System.loadLibrary("main");

क्या करता है के कारण होता है इसका मतलब? cannot locate '__gnu_thumb1_case_uqi'

+0

कृपया अपने ndk-build को V = 1 के साथ चलाएं और लिंक चरण –

+0

के लिए कमांड लाइन पोस्ट करें क्या आपको ओएस के साथ डिवाइसों में कोई समस्या है! = 4.0.3? – Supahfly

+0

हाय, मुझे एक ही समस्या का सामना करना पड़ रहा है, जहां मैं SQLiteDatabase.loadLibs (यह) लोड कर रहा हूं और यह मुझे अपवाद के बारे में फेंकता है। जो एंड्रॉइड 4.2 और उच्चतम में ठीक काम करता है, लेकिन एचटीसी वन वी डिवाइस में काम नहीं कर रहा है जिसमें v4.0.3 है, कृपया मदद करें !! – Zoombie

उत्तर

2

क्या आप armv7 के लिए संकलित कर रहे हैं? यदि आप नहीं हैं, armv7 के लिए संकलन करने का प्रयास करें।

+0

मैं armv7 के लिए भी संकलित कर रहा हूं, और मुझे वास्तव में समझ में नहीं आ रहा है कि आपने Necessitas Qt Creator – Giuseppe

+1

के बारे में क्यों लिखा है क्योंकि मैंने कोई गलती की है, क्षमा करें :-) मैंने इस सवाल को किसी अन्य व्यक्ति के साथ भ्रमित कर दिया जिसमें क्यूटी निर्माता का उपयोग किया गया था। वैसे भी, armv7 डिवाइस पर armv5 के लिए संकलित लाइब्रेरी को लोड करने का प्रयास करते समय मुझे वही सटीक समस्या थी। Armv5 के लिए संकलन ने इसे पूरी तरह से काम किया, इसलिए मैंने आगे की जांच नहीं की, लेकिन मैंने सोचा कि इससे मदद मिल सकती है। –

1

Producing optimised NDK code for multiple architectures?

के बारे में बनाम ऊपर के लिंक में स्वीकार किए जाते हैं जवाब में 'अंगूठे' 'हाथ' पढ़ा।

फिर, अपनी config निर्देश को दूर अंगूठे के लिए निर्माण करने के लिए और सत्यापित करें कि आप हाथ के लिए निर्माण कर रहे हैं ...

या ...

बीमार एक जंगली अनुमान लगाने के लिए ... अपने पुस्तकालय आपको में लिंकर बयान में अपने 'Android.mk'

कोशिश NDK के लिए गूगल मंच ... 'प्रतीक पता नहीं लगा सकते' के लिए खोज ...

सच हताश?

'रनटाइम त्रुटियों' अनुभाग here

6

__gnu_thumb1_case_uqi एक सहायक जो एक सघन स्विच मेज पर एक अनुक्रमित कूद करता है देखते हैं; स्विच को जल्दी से लागू करता है। आपके पास दो विकल्प हैं: इससे बचें या इसके साथ लिंक करें।

यदि आप अनुकूलन स्तर बढ़ाते हैं (-O3 का उपयोग करके) आपको इस प्रतीक की आवश्यकता नहीं हो सकती है। साथ ही, सीपीयू को बदलने से thumb2 निर्देशों का उपयोग करने में मदद मिल सकती है। -ffreestanding विकल्प के साथ संकलन इस प्रतीक से भी बच सकता है। यदि आपके पास स्विच स्टेटमेंट पर नियंत्रण है, तो आप इसे फ़ंक्शन पॉइंटर्स की सरणी से बदल सकते हैं।

यह दिनचर्या libgcc के अंदर है। आप libgcc को स्थिर रूप से लिंक कर सकते हैं। एंड्रॉइड एसडीके/कंपाइलर में कहीं, libgcc.a होना चाहिए। libgcc.a के साथ लिंक, -L और -l का उपयोग करके या कोड प्राप्त करने के लिए -static-libgcc लिंकर विकल्प का उपयोग करें (http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html देखें)।

संपादित करें: यदि आप कुछ भी संकलित नहीं कर रहे हैं, तो आप अपने सिस्टम पर libgcc.so पा सकते हैं। यह /lib या /usr/lib या शायद एंड्रॉइड उपकरणों के लिए अजीब कुछ जगह हो सकता है। निर्देशिका को जोड़ना जहां libgcc.so पर्यावरण परिवर्तनीय LD_LIBRARY_PATH पर भी समस्या को हल कर सकता है। यह शायद दुर्भाग्यपूर्ण है कि सैमसंग ने असंगत बाइनरी जारी की है और यदि आप अपना कोड संकलित नहीं कर रहे हैं तो इस मुद्दे को ठीक करने का कोई तरीका नहीं है। बहु-lib वितरण के लिए सही libgcc.so शायद /usr/lib/thumb जैसे कुछ के अंदर। मैं डेविक सामग्री के बारे में ज्यादा नहीं जानता, लेकिन एंड्रॉइड जेवीएम लाइब्रेरी के सही सेट पर इंगित नहीं कर सकता है जब यह चलता है।

+0

इसने मेरे लिए अभी तक समस्या हल नहीं की है, लेकिन फिर भी यह अच्छी जानकारी है ... –

+0

दुर्भाग्यवश, एनडीके अपनी किसी भी पुस्तकालय में '__gnu_thumb1_case_uqi' निर्यात नहीं करता है। –

+0

स्वयं द्वारा एनडीके शायद 'बायोनिक' का उपयोग कर रहा है; एक google libc, तो libgcc.so शायद समस्या नहीं है, लेकिन कुछ 'बायोनिक' लाइब्रेरी संस्करण जिसमें इसे शामिल नहीं किया गया है, शायद आपको प्रतीक नहीं होने के लिए पुराने एनडीके के साथ निर्माण करना होगा। मुझे लगता है कि समारोह 'बायोनिक' में ग्लिब के समान होगा; एक स्विच स्टेटमेंट। –

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