2011-04-15 4 views
5

Necesito construir una biblioteca compartida basada en una biblioteca estática precompilada. Mi makefile src/android/externa/mycode/Android.mk:Incluye biblioteca estática preconstruida en el sistema de compilación de Android

LOCAL_PATH:= $(call my-dir) 

include $(CLEAR_VARS) 
LOCAL_ARM_MODE := arm 
LOCAL_MODULE := libMyStatic 
LOCAL_SRC_FILES := libStatic.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE_TAGS := eng 
LOCAL_ARM_MODE := arm 
LOCAL_PRELINK_MODULE := false 
LOCAL_MODULE := libMyShared 
LOCAL_WHOLE_STATIC_LIBRARIES := libMyStatic 
include $(BUILD_SHARED_LIBRARY) 

que la edifican haciendo: mmm external/mycode y obtener el error:

make: *** No rule to make target `out/target/product/generic/obj/STATIC_LIBRARIES/libMyStatic_intermediates/libMyStatic.a', needed by `out/target/product/generic/obj/SHARED_LIBRARIES/libMyShared_intermediates/LINKED/libMyShared.so'. Stop. 
make: Leaving directory `/home/test/src/android' 

Si hago lo siguiente manualmente y correr mmm nuevo funciona:

cp external/mycode/libStatic.a out/target/product/generic/obj/STATIC_LIBRARIES/libMyStatic_intermediates/libMyStatic.a 

Si hago un proyecto de NDK y utilizar este archivo Android.mk creo que funciona de inmediato cuando se llama a la secuencia de comandos NDK-construcción. Entonces, el problema tiene que ver con que el archivo libMyStatic.a no se crea y copia en la carpeta intermedia cuando utilizo el sistema Build de Android. ¿Alguien puede decirme qué debo configurar para que el sistema de compilación copie la biblioteca estática a la carpeta intermedia?

+0

Vengo con la problem.Have similares u fijarla would u importaría compartir ur camino conmigo THX –

+0

Tal vez esto puede ayudarle a: [biblioteca compartida prebuilt enlace utilizando Android.mk] [1] [1]: http://stackoverflow.com/questions/14322766/android-link-prebuilt-shared-library-so-within-jar-file-in-ndk – mrAlmond

Respuesta

4

modificar el archivo de mk

"LOCAL_WHOLE_STATIC_LIBRARIES := libMyStatic" 

a

"LOCAL_LDFLAGS += -lMyStatic 
1

Intenta construir su biblioteca estática como este. ??

include $(CLEAR_VARS) 

LOCAL_MODULE := libMyStatic 
LOCAL_MODULE_CLASS := STATIC_LIBRARIES 
LOCAL_MODULE_SUFFIX := .a 
LOCAL_SRC_FILES := libMyStatic.a 

include $(BUILD_PREBUILT) 
+0

esto no es una solución completa ... – Flayn

+0

Está casi completo, dependiendo de dónde coloque la biblioteca precompilada. En mi caso, no estaba en la carpeta externa. ¡Tuve que editar los archivos make en los directorios principales para que el sistema de compilación AOSP conociera mi lib, sus dependencias y sus dependientes! – Paschalis

Cuestiones relacionadas