Red de conocimiento informático - Conocimiento informático - Cómo llamar variables en android.mk

Cómo llamar variables en android.mk

Variable

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

1, explicación LOCAL_LDFLAGS

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