android - 在 Android 上加载 libpthread.so 时出错

标签 android linux android-ndk pthreads spotify

我正在使用 android-NDK-r10 编译包含 libspotify 函数的 C++ 代码。

在我的应用程序中,我在扩展 Service 的类的 onCreate() 方法中包含两个库,如下所示:

System.loadLibrary("spotify");
System.loadLibrary("spotifywrapper");

在我的 C++ 代码中(编译为“libspotifywrapper.so”),我照常包含 libpthread:

#include <stdlib.h>
#include <pthread.h>
#include <string>
#include <api.h>

使用 ndk-build 进行编译,我没有收到任何错误。

当我启动我的 android 应用程序时,dalvik 崩溃并显示以下消息:

09-26 08:18:18.941: E/dalvikvm(11820): dlopen("/data/app-lib/com.example.myApp-1/libspotify.so") failed: dlopen failed: could not load library "libpthread.so.0" needed by "libspotify.so"; caused by library "libpthread.so.0" not found

我复制了this将 libpthread 版本放入 libs/armeabi/,将其重命名为 libpthread.so,并像上面两个库一样包含它。当我运行该应用程序时,它会产生一个错误,即找不到 libc.so.6
Afaik,libc 不包含在 Android 中,不是吗?

问谷歌,我读到 libpthread 包含在 libc 中,但由于 Android 使用 Bionic,我不知道 libpthread 是否包含在其中。

实际的问题是:如何摆脱这个找不到 libpthread 的错误?
我认为它不会那么困难,并且编译工作正常,它不可能是我代码中的错误。是我的 Android 设备(4.4.4 和 4.4.2)的原因吗?

我希望你能帮助我,
卢卡斯

最佳答案

Android 上没有libpthread.so,所有pthread 特性直接由C 库实现。

您的 libspotify.so 不是使用与 Android 兼容的工具链编译的,您将无法在 Android 上加载/使用它。询问为您提供 Android 兼容版本的人,即使用 NDK 工具链构建的版本。

关于android - 在 Android 上加载 libpthread.so 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054039/

相关文章:

android - 如何在 View 之间导航?不会丢失初始 View 的数据

java - Volley 请求给出的响应不准确,但链接数据正确

java.lang.ClassCastException 在应用程序中启动 Activity 时

c - 在 C 中使用 exit()

调用驻留在 Android 库项目中的 native 函数时出现 Android NDK UnsatisfiedLinkError

android - 如何授予android shell 用户android.permission.RECORD_AUDIO 权限?

android - 在android中使用Geocoder获取地址

c - Makefile "makefile"中的 "kaodv.o: $(KOBJS) Makefile"是什么意思

linux - EC2 存储空间不足,哪些日志等可以删除?

android - Firebase Crashlytics Android NDK : empty symbols on crash reports