Cómo compilar el proyecto ndk de Android usando su propio archivo MAKE
De hecho, la compilación en Android ndk es una compilación cruzada en el análisis final. Siempre que la cadena de herramientas de compilación cruzada esté configurada, los programas C y C ++ que se ejecutan en Android también se pueden compilar utilizando el archivo MAKE original. . Tome la versión ndk de android-ndk-r4-crystax como ejemplo: ruta del compilador android-ndk-r4-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin nombre prefijo arm-eabi-header Directorio de archivos android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include directorio de archivos de biblioteca android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/ lib Puede probar la configuración anterior. Si no hay problemas con la compilación y la vinculación, puede enviarlo con adb al dispositivo Android y ejecutarlo para ver cuál es el resultado. Se bloquea un poco y no se puede ejecutar. Quizás quieras probar el ejemplo de ndk que viene con Android. De hecho, se puede ejecutar. No basta con configurar correctamente el compilador, los archivos de encabezado y los archivos de biblioteca. También es necesario configurar los parámetros de compilación y vinculación. ¿Cuáles son los parámetros de compilación y vinculación en el ejemplo de Android? Es posible que desee profundizar en el archivo MAKE de Android, pero pronto descubrirá que es algo más complicado y que utiliza muchas funciones de script de creación. De hecho, el archivo MAKE de Android puede generar los comandos detallados ejecutados, siempre que se agregue V = 1 al crear. Puede ver que, de hecho, se incluyen muchos parámetros en los parámetros de compilación: -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -Wno-psabi -march=armv5te -mtune =xscale -msoft- float -mthumb -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID Parámetros de enlace: -nostdlib -Bdynamic - Wl,-dinámico- enlazador,/system/bin/linker -Wl,--gc-sections -Wl,-z,nocopyreloc -Wl,--no-undefinido -Wl,-z,noexecstack -L$(PLATFORM_LIBRARY_DIRECTORYS) crtbegin_static .o crtend_android.o Entre los parámetros de enlace, -Wl, -dynamic-linker,/system/bin/linker, crtbegin_static.o y crtend_android.o son los más críticos. Android usa su propio cargador de procesos y personaliza el tiempo de ejecución de c. El inicio está completo. No es de extrañar que no se pueda iniciar el proceso previamente compilado.