我尝试在Android设备上使用NDK运行可运行的Linux库。 Android Studio总是告诉我一切都很好,但最终应用程序在设备上崩溃了。在我眼中,唯一的原因是该库使用的某些规范在Android上不起作用。
我做了一个ldd,输出是:
linux-vdso.so.1 (0x00007ffef7deb000)
libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fd8ece81000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd8ecaf8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd8ec75a000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd8ec542000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd8ec151000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd8ebf4d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd8ebd2e000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd8ebb26000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd8ed754000)
我认为它们都是通用的Linux库,必须在具有NDK的Android中使用。这里有人遇到类似的问题吗?
Android是Linux,但不是GNU / Linux。该库是为GNU系统构建的。您需要使用NDK重建该库以及libasound。
至于其他库,您不需要构建它们,但是可能值得解释一下: