在 Android 上构建 vp8
我正在尝试为 Android 构建 vp8 编解码器。我使用sourcery g++运行了configure.sh脚本和armv6的makefile,成功生成了libvpx.so。之后我编写了一个 JNI 包装器并使用 ndk-build 成功编译了它。当我在 Gingerbread 智能手机上运行此程序时,出现 UnsatisfiedLinkError“libpthread.so.0 not found”。我怎样才能摆脱这个错误?
I'm trying to build the vp8 codec for Android. I ran the configure.sh script and the makefile for armv6 with sourcery g++ which succesfully produced libvpx.so. After that I wrote a JNI wrapper and compiled it with ndk-build succesfully. When I run this on a Gingerbread smartphone I got a UnsatisfiedLinkError "libpthread.so.0 not found". How can I get rid of this error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 http://git .chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android 进行了一些可读性调整。
创建 {project}/jni 文件夹。
获取 JNI 绑定。
<块引用>
git克隆https://chromium.googlesource.com/webm/bindings
获取 libvpx。
<块引用>
git克隆https://chromium.googlesource.com/webm/libvpx
配置 libvpx安卓
<块引用>
./libvpx/configure --target=armv7-android-gcc --disable-examples --sdk-path={NDK 路径}
--sdk-path
必须是绝对路径。获取 libwebm。
<块引用>
cd 绑定/JNI
git克隆https://chromium.googlesource.com/webm/libwebm
获取libwebm
获取利博格。
<块引用>
从 http://downloads.xiph 下载 ogg 代码。 org/releases/ogg/libogg-1.3.0.tar.gz
提取到绑定/JNI。
我们需要运行configure来生成config_types.h。
<块引用>
cd libogg-1.3.0 && ./配置&&光盘..
获取 libvorbis
<块引用>
从 http://downloads.xiph 下载 vorbis 代码。 org/releases/vorbis/libvorbis-1.3.3.tar.gz
提取到绑定/JNI。
libvorbis
获取libyuv
<块引用>
svn checkout http://libyuv.googlecode.com/svn/trunk/ libyuv -只读
libyuv
使用以下数据创建 {project}/jni/Application.mk:
使用以下数据创建 {project}/jni/Android.mk:
构建 JNI 代码。
<块引用>
{NDK 路径}/ndk-build
复制 java 代码。
<块引用>
cp -R 绑定/JNI/com/google ../src/com/
添加代码以测试绑定。
运行应用程序。您应该看到 libwebm 版本输出。
根据需要进行调整。 VP8 包装器位于 com.google.libvpx 命名空间中。
From http://git.chromium.org/gitweb/?p=webm/bindings.git;a=blob_plain;f=JNI/README.Android with some adjustments for readability.
Create {project}/jni folder.
Get JNI bindings.
Get libvpx.
Configure libvpx for Android
--sdk-path
MUST be absolute.Get libwebm.
Get libogg.
We need to run configure to generate config_types.h.
Get libvorbis
Get libyuv
Create {project}/jni/Application.mk with the data below:
Create {project}/jni/Android.mk with the data below:
Build the JNI code.
Copy the java code.
Add code to test the bindings.
Run the app. You should see libwebm version output.
Tweak as needed. VP8 wrappers are in the com.google.libvpx namespace.
有时这可能是共享库中 SONAME 的问题,请查看这篇文章。
http://groups.google.com/group/android-ndk/browse_thread /thread/fd484da512650359
如果您并不真正需要它们,您可以禁用它们。
我过去遇到过 .so 文件的问题,并且通过使用 .a 静态库而不是 .so 共享库避免了所有这些问题
This can sometimes be a problem with the SONAME in a shared library, have a look at this article.
http://groups.google.com/group/android-ndk/browse_thread/thread/fd484da512650359
You could disable pthreads if you don't really need them.
Iv'e had problems with .so files in the past and have avoided all of these problems by using .a static libraries instead of .so shared libraries