这是一个与视频处理相关的Android应用程序。 使用的库是ffmpeg + x264
,并根据ffmpeg_vitamio工作松散编译为什么它抱怨找不到一个图书馆,即使我已经包含它?
编译的ffmpeg的好,libffmpeg.so根据下面创建:
$CC -lx264 -lm -lz -shared --sysroot=$SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $EXTRA_LDFLAGS libavutil/*.o libavutil/arm/*.o libavcodec/*.o libavcodec/arm/*.o libavformat/*.o libswresample/*.o libswresample/arm/*.o libswscale/*.o -o $PREFIX/libffmpeg.so
这里libx264被列入为共享库,从libx264.so.130更名为
然后我把libffmpeg.so
放在我的Android项目中。 编译很好。但是运行的时候,错误是:
05-21 13:17:45.066: E/AndroidRuntime(3973): FATAL EXCEPTION: main
05-21 13:17:45.066: E/AndroidRuntime(3973): java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libx264.so.130" needed by "libffmpeg.so"; caused by load_library(linker.cpp:745): library "libx264.so.130" not found
我想创建libffmpeg.so,我用-lx264 我以为所有的链接库时,将被纳入到最终输出库。
但无论如何,让我试着找出解决方案。 我把libx264.so或libx264.so.130放在几个目录中,例如/ jni,/ libs,/ obj等。
或者我也尝试在jni的Android.mk中添加-lx264。
但存在相同的错误。
所以我的问题是: (1)当gcc创建共享库时,输出.so库是否包含链接共享库,这里是libx264.so?
(2)我上面的项目出了什么问题?
最后应该在哪里添加共享库? PREBUILT_SHARED_LIBRARY? LOCAL_JNI_SHARED_LIBRARIES? LOCAL_SHARED_LIBRARIES? –