【发布时间】:2013-05-22 07:01:19
【问题描述】:
这是一个与视频处理相关的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) 我上面的项目有什么问题?
【问题讨论】:
标签: android gcc shared-libraries