Cargando libs compartidas que dependen de otras libs compartidas

Problema:

Estoy construyendo una aplicación de Android en Eclipse que usa lib compartidalibgstreamer-0.10.so (Libras del paquete NDK de GStreamer-android compiladas para la plataforma android-8). Hice nueva carpetalibs/armeabi En la carpeta raíz del proyecto y ponerlo allí. Además, he puesto todas las demás librerías que vienen con ella (158 de ellas) en la misma carpeta. Si pongo esto en mi código de actividad principal:

static{
    System.loadLibrary("gstreamer-0.10");
}

Y compilar / instalar / ejecutar mi aplicación en el emulador de Android-8, arroja este error:

06-15 21:54:00.835: E/AndroidRuntime(402): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1962]:    33 could not load needed library 'libglib-2.0.so' for 'libgstreamer-0.10.so' (load_library[1104]: Library 'libglib-2.0.so' not found)

Ahora,libglib-2.0.so está en la misma carpeta quelibgstreamer-0.10.so¿Y por qué no está cargado? Obtengo que el enlazador intenta cargarlo desde/system/lib ylibglib-2.0.so simplemente no está allí, pero ¿por qué no lo está cargando desde la ubicación dondelibgstreamer-0.10.so ¿es?

Así que fui a descubrir qué libslibgstreamer-0.10.so depende de con este comando:

arm-linux-androideabi-readelf -d libgstreamer-0.10.so

Resultados:

Dynamic section at offset 0x118b64 contains 29 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libglib-2.0.so]
 0x00000001 (NEEDED)                     Shared library: [libgobject-2.0.so]
 0x00000001 (NEEDED)                     Shared library: [libgthread-2.0.so]
 0x00000001 (NEEDED)                     Shared library: [libgmodule-2.0.so]
 0x00000001 (NEEDED)                     Shared library: [libdl.so]
 0x00000001 (NEEDED)                     Shared library: [libm.so]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x0000000e (SONAME)                     Library soname: [libgstreamer-0.10.so]
 0x00000010 (SYMBOLIC)                   0x0

Primeros cuatrolibglib-2.0.so, libgobject-2.0.so, libgthread-2.0.so, libgmodule-2.0.so están todos ubicados en la misma carpetalibgstreamer-0.10.so Se encuentra en (/data/data/com.marko.gstreamer_test/lib) en el dispositivo.

Solución lógica:

Por lo tanto, traté de cargar estas cuatro bibliotecas antes de cargarlibgstreamer-0.10.so Y funcionó:

static{
    System.loadLibrary("glib-2.0");
    System.loadLibrary("gthread-2.0");
    System.loadLibrary("gobject-2.0");
    System.loadLibrary("gmodule-2.0");
    System.loadLibrary("gstreamer-0.10");
}

Mis preguntas son:

¿Puedo decirle al vinculador que cargue también libs desde la ubicación de la aplicación? Como agregar ruta a alguna variable de entorno o algo similar a PATH en Linux.

¿Mi solución tiene algunos efectos secundarios negativos? Quiero decir, el enlazador haría esto también antes de cargar ellibgstreamer-0.10.so. ¿Pero esto hará algún problema?

¿Puedo instalar mis libretas a/ system / lib ¿Carpeta en dispositivo sin rootear?

Respuestas a la pregunta(2)

Su respuesta a la pregunta