這是一個與視頻處理相關的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? –