Cómo llamar variables en android.mk
1
LOCAL_PATH:= $(call my-dir)
1, explica LOCAL_PATH:
L1: como sigue Como como se muestra en la figura
Android.mk primero debe definir la variable LOCAL_PATH para especificar la ubicación del archivo fuente.
2. Explique mi directorio:
L1: como se muestra en la siguiente figura
Se utiliza la función macro 'my-dir' proporcionada por el sistema de compilación. para obtener el directorio actual.
2
Incluyendo dólares estadounidenses (liquidación VARS)
1, explique claramente_VARS:
L1: como se muestra en la siguiente figura
p>
El sistema de compilación proporciona la variable CLEAR_VARS, que apunta a un archivo MAKE para borrar variables que comienzan con LOCAL _ (excepto LOCAL _ PATH). La razón por la que es necesario es porque todas las variables son globales en todo el contexto de compilación, para garantizar que estas variables solo funcionen en un ámbito local;
三
LOCAL_MODULE:= hello-jni
1. Explique el módulo local:
L1: como se muestra en la siguiente figura
Cada archivo android.mk debe definir un módulo marcado LOCAL_MODULE . El nombre debe ser único y no contener espacios. El sistema de compilación modificará automáticamente el prefijo y sufijo de los archivos generados. Por ejemplo, si un módulo es 'foo'***, la biblioteca se cambiará a 'lib foo so';
Nota importante: si su módulo se llama "libfoo" y el archivo generado por el sistema de compilación es "libfoo.so", no se agregará ningún prefijo. Cuando lo utilices, la plataforma Android lo reconocerá automáticamente;
Cuatro
LOCAL_SRC_FILES: = hello-jni.c
1. Interpreta los archivos SRC locales
L1: como se muestra en la siguiente figura
LOCAL_SRC_FILES debe contener una serie de archivos fuente C/C que se construirán y cargarán en el módulo. Tenga en cuenta que los archivos de encabezado que deben incluirse no se enumeran aquí, porque el sistema de compilación calculará automáticamente las dependencias y el compilador solo puede reconocer los archivos fuente.
2.Explique LOCAL_CPP_EXTENSION.
L1: como se muestra a continuación
Tenga en cuenta que la extensión de archivo c predeterminada es. cpp ' y CPP ', LOCAL_CPP_EXTENSION se pueden utilizar para especificar diferentes tipos de extensiones. No olvide los puntos anteriores (por ejemplo, "cxx" está bien, pero "cxx" no).
Por ejemplo: local_CPP_extension: = .cc.cpp.
Cinco
Contiene $(BUILD_SHARED_LIBRARY)
1, explica BUILD_SHARED_LIBRARY
L1: como se muestra en la siguiente figura
'Build System' proporciona una variable BUILD_SHARED_LIBRARY, que determinará qué se construirá y cómo generar correctamente * * * la biblioteca compartida en función de toda la información definida antes de 'include' y las variables con el prefijo LOCAL_;
2. Explique BUILD_STATIC_LIBRARY
L1: como se muestra en la siguiente figura
Igual que el anterior, excepto que genera una biblioteca estática.
Seis
LOCAL_C_INCLUDES:= $(NDK root)/sources/third_party/freetype
1, explica NDK_ROOT
Chino: NDK_ROOT Representa el directorio raíz de NDK. Por ejemplo, el mío es "d:\Android\Android-ndk-r 10". Este ejemplo se utiliza para cargar la ruta del archivo de encabezado freetype en el directorio raíz de ndk;
Siete
indicadores LOCAL _ LD: = \
$(LOCAL _ PATH)/libs/$(TARGET _ ARCH _ ABI)/lib freetype a
Se utiliza para cargar la propia biblioteca estática del usuario (archivo .a).
2. Explique target_archie_ABI
El tipo de cpu/abi actual es muy útil al vincular diferentes tipos de CPU_ABI, como se muestra a continuación.
Ocho
$(llamar import-add-path, $(LOCAL_PATH)/libsrc)
1, explicación: import-add-path
Agregue su propia ruta a la variable de entorno NDK MODULE_PATH, esto se usará al compilar bajo raíz/fuentes que no sean ndk.
Nueve
LOCAL _ SRC _ FILES: = hola-JNI . c hola JNI
$(Error$(LOCAL_SRC_FILES))
.1, explicación: $
Agregue "$" antes de la variable para devolver el valor de la variable.
2. Explicación: $(cadena de error)
se usa para imprimir el contenido correspondiente a la cadena en la consola y el archivo android.mk detiene la compilación, como se muestra a continuación.
10
LOCAL _ SRC _ FILES: = hola-JNI . c hola JNI
$(WARNING$(LOCAL_SRC_FILES))
1. Explicación: $(cadena de advertencia)
se usa para imprimir el contenido correspondiente a la cadena en la consola. El archivo android.mk continuará compilándose, como se muestra a continuación.
11
LOCAL_PRELINK_MODULE:= false
1 Interpretación de LOCAL_PRELINK_MODULE:
Optimice el código antes de desactivar el enlace del compilador para evitar inesperado El código usado se agrega a la biblioteca generada.
12
LOCAL_EXPORT_CFLAGS:=-DFOO = 1
1, explica LOCAL_EXPORT_CFLAGS
Defina esta variable para registrar algunos Lista de indicadores de compilación c/c que se agregarán a otros LOCAL_CFLAGS que usan este módulo. Las funciones de LOCAL_CFLAGS son equivalentes a: LOCAL_STATIC_LIBRARIES y LOCAL_SHARED_LIBRARIES
13
LOCAL_STATIC_LIBRARIES: = foo
1 Interpretar bibliotecas estáticas locales
Enlace en módulo de biblioteca estática. Este es el nombre del módulo de la biblioteca estática, no el nombre de la biblioteca estática.
14
Bibliotecas locales compartidas
Enlaces en módulos de biblioteca dinámica. Este es el nombre del módulo de la biblioteca dinámica, no el nombre de la biblioteca estática.
15
Etiqueta Local_Export_CPP
Tiene la misma función que LOCAL_EXPORT_CFLAGS, pero solo se puede utilizar en c
16
La exportación local incluye
Igual que LOCAL_EXPORT_CFLAGS, pero para las rutas de inclusión de C, los módulos pueden usar fácilmente la ruta de inclusión después de declarar el módulo llamado.
17
Indicadores de exportación locales
Misma función que LOCAL_EXPORT_CFLAGS, pero solo tiene una opción de enlace.
18
Local_Export_LDLIBS
Una función similar a LOCAL_EXPORT_CFLAGS, pero la biblioteca del sistema descrita por esta variable debe tener el prefijo '-l', son opciones del vinculador se importará y agregará al LOCAL_LDLIBS de su módulo.
19
LOCAL_ALLOW_UNDEFINED_ SYMBOLS:=true
Permitir símbolos no definidos
20
LOCAL_CFLAGS
Compile la variable de bandera correspondiente. archivo c.
21
LOCAL_LDLIBS
Se utiliza para vincular * * * bibliotecas compartidas (so) o archivos ejecutables. Cuando utilice archivos de la biblioteca del sistema, deberá agregar el prefijo "-l". Por ejemplo, el siguiente ejemplo le indicará al vinculador que se vincule con /system/lib/libz.so mientras genera el módulo.
LOCAL_LDLIBS := -lz
Nota: Si vincula una biblioteca estática en un módulo, la biblioteca estática no funcionará y ndk-build imprimirá un mensaje de advertencia.
22
LOCAL_CFLAGS:=-f visibilidad=oculto
Ocultar nombre de función de biblioteca
23
LOCAL_PROGUARD_ENABLED está habilitado de forma predeterminada. Si no se especifica, funcionará y es posible realizar optimizaciones.
LOCAL_PROGUARD_ENABLED:= deshabilitado