"*.so" has unexpected e_machine: 40
java.lang.UnsatisfiedLinkError: dlopen failed: "*/*/*.so" has unexpected e_machine: 40
android JNI so包问题。在一些设备上崩溃报错。一些设备上是可以正常使用的。
网上查找了很多资料感觉都不管用啊,请知道的前辈们能告诉我问题的原因 和解决的方法 谢谢了 比较急 在线等!
D:\ttt\native-audio>ndk-build
[arm64-v8a] Compile : native-audio-jni <= native-audio-jni.c
[arm64-v8a] SharedLibrary : libnative-audio-jni.so
[arm64-v8a] Install : libnative-audio-jni.so => libs/arm64-v8a/libnative-audio-jni.so
[x86_64] Compile : native-audio-jni <= native-audio-jni.c
[x86_64] SharedLibrary : libnative-audio-jni.so
[x86_64] Install : libnative-audio-jni.so => libs/x86_64/libnative-audio-jni.so
[mips64] Compile : native-audio-jni <= native-audio-jni.c
[mips64] SharedLibrary : libnative-audio-jni.so
[mips64] Install : libnative-audio-jni.so => libs/mips64/libnative-audio-jni.so
[armeabi-v7a] Compile thumb : native-audio-jni <= native-audio-jni.c
[armeabi-v7a] SharedLibrary : libnative-audio-jni.so
[armeabi-v7a] Install : libnative-audio-jni.so => libs/armeabi-v7a/libnative-audio-jni.so
[armeabi] Compile thumb : native-audio-jni <= native-audio-jni.c
[armeabi] SharedLibrary : libnative-audio-jni.so
[armeabi] Install : libnative-audio-jni.so => libs/armeabi/libnative-audio-jni.so
[x86] Compile : native-audio-jni <= native-audio-jni.c
[x86] SharedLibrary : libnative-audio-jni.so
[x86] Install : libnative-audio-jni.so => libs/x86/libnative-audio-jni.so
[mips] Compile : native-audio-jni <= native-audio-jni.c
[mips] SharedLibrary : libnative-audio-jni.so
[mips] Install : libnative-audio-jni.so => libs/mips/libnative-audio-jni.so
最近几个写android有问到 dlopen failed: "*.so" has unexpected e_machine 错误,现给出解决方案:
readelf -h *.so 看一下头 , 如果是写android的so库,一般肯定包含一下信息
Class=ELF32
Machine......
答案就在这里:dlopen failed: "*.so" has unexpected e_machine
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
这是因为不同的机器的.so文件不能运行,so文件不像java那样可以跨平台,所以为了兼容多个机器,就要在不同的机器下编译so,或者采用交叉编译,产生多份so,以实现跨平台