Android ndk link nicht auf libgnustl_shared.so

habe ich zusammengestellt ffmpeg mit libstagefright

In den letzten, während die Verknüpfung hab ich Undefinierte Referenzen mit unten

$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib  -soname libffsft1.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffsft1.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lstdc++ -lx264 -lmedia -lutils  -lstagefright -lbinder --warn-once  --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/$CPU/libgcc.a

Bezieht diese ich geändert, wie unten

$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffsft1.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffsft1.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog -lstdc++ -lx264 -lmedia -lutils  -lstagefright -lbinder --warn-once  --dynamic-linker=/system/bin/linker $NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/$CPU/libgcc.a

wo

CPU=armv7-a
PREFIX=./android/$CPU
NDK=~/Android/android-ndk-r7c
PLATFORM=$NDK/platforms/android-9/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86

Nun bekam ich .also die Datei, aber wenn Sie es in Android, ich habe

03-11 03:26:35.760: E/AndroidRuntime(24036):    at dalvik.system.NativeStart.main(Native Method)
03-11 03:26:35.760: E/AndroidRuntime(24036): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1892]:  1908 could not load needed library 'libgnustl_shared.so' for 'libffsft1.so' (load_library[1094]: Library 'libgnustl_shared.so' not found)
03-11 03:26:35.760: E/AndroidRuntime(24036):    at java.lang.Runtime.loadLibrary(Runtime.java:370)
03-11 03:26:35.760: E/AndroidRuntime(24036):    at java.lang.System.loadLibrary(System.java:535)

Also sollte ich kopieren Sie die gewünschte Bibliothek aus und verwenden Sie eine System.loadlibrary zu laden? oder tun, Tue ich es in die falsche Art und Weise?


Für Ihren Hinweis, ich füge das undefied Verweise ich bekam zwar nicht die Verknüpfung mit $NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/libgnustl_shared.so

libavcodec/libavcodec.a(libstagefright.o):In function `std::_Rb_tree_const_iterator<std::pair<long long const, TimeStamp> >::operator--()':/home/Android/android-ndk-r7c/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:274: undefined reference to `std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)'
libavcodec/libavcodec.a(libstagefright.o): In function `std::_Rb_tree<long long, std::pair<long long const, TimeStamp>, std::_Select1st<std::pair<long long const, TimeStamp> >, std::less<long long>, std::allocator<std::pair<long long const, TimeStamp> > >::_M_insert_(std::_Rb_tree_node_base const*, std::_Rb_tree_node_base const*, std::pair<long long const, TimeStamp> const&)':/home/Android/android-ndk-r7c/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:923: undefined reference to `std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
libavcodec/libavcodec.a(libstagefright.o): In function `std::_Rb_tree_const_iterator<std::pair<long long const, TimeStamp> >::operator++()':/home/Android/android-ndk-r7c/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:259: undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base const*)'
libavcodec/libavcodec.a(libstagefright.o): In function `std::_Rb_tree_iterator<std::pair<long long const, TimeStamp> >::operator++(int)':/home/Android/android-ndk-r7c/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:192: undefined reference to `std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
libavcodec/libavcodec.a(libstagefright.o): In function `std::_Rb_tree<long long, std::pair<long long const, TimeStamp>, std::_Select1st<std::pair<long long const, TimeStamp> >, std::less<long long>, std::allocator<std::pair<long long const, TimeStamp> > >::erase(std::_Rb_tree_iterator<std::pair<long long const, TimeStamp> >)':/home/Android/android-ndk-r7c/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:1387: undefined reference to `std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
libavcodec/libavcodec.a(libstagefright.o): In function `std::_Rb_tree_iterator<std::pair<long long const, TimeStamp> >::operator--()':/home/Android/android-ndk-r7c/sources/cxx-stl/gnu-libstdc++/include/bits/stl_tree.h:199: undefined reference to `std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
  • sriandroid.blogspot.in/2011/12/... Überprüfen Sie diese
  • Danke , das ist nett, all-in-one-ndk beginner ' s tutorial.! Bitte Lesen Sie meine Frage , es geht um spezifische Verknüpfung von Problem mit stl
InformationsquelleAutor nmxprime | 2014-03-11
Schreibe einen Kommentar