studio optimizar numero compilacion acelerar android android-ndk cross-compiling freetype2

optimizar - Compilación cruzada de Freetype 2.5.3 para Android



numero de compilacion huawei (4)

Estoy tratando de compilar de forma cruzada Freetype 2.5.3, así que podría usarlo con mi proyecto Android NDK OpenGL ES 2, pero no estoy seguro de cómo hacerlo. Estoy usando Cygwin en Windows. Ya busqué y leí muchas cosas al respecto, pero aún necesito ayuda.

Exporté algunas banderas en cygwin:

$ export NDK_TOOLCHAIN=/cygdrive/d/Development/Android/ndk-standalone-15 $ export PATH="$NDK_TOOLCHAIN/bin/:$PATH" $ export HOST=arm-linux-androideabi $ export CC=$HOST-gcc $ export CXX=$HOST-g++ $ export AR=$HOST-ar $ export LD=$HOST-ld $ export AS=$HOST-as $ export NM=$HOST-nm $ export STRIP=$HOST-strip $ export RANLIB=$HOST-ranlib $ export OBJDUMP=$HOST-objdump $ export CPPFLAGS="--sysroot=$NDK_TOOLCHAIN/sysroot -I$NDK_TOOLCHAIN/sysroot/usr/include -I$NDK_TOOLCHAIN/include" $ export LDFLAGS="-L$NDK_TOOLCHAIN/sysroot/usr/lib -L$NDK_TOOLCHAIN/lib"

Y luego traté de compilar de forma cruzada el tipo de freetype:

$ ./configure --with-sysroot=/cygdrive/d/Development/Android/ndk-standalone-15/sysroot --host=$HOST --prefix=/ft2tmp --build=$BUILD --without-zlib --with-png=no

Pero tengo un error:

Sistema de compilación FreeType: detección automática del sistema

Se usan las siguientes configuraciones:

compilador de plataforma unix
directorio de configuración de arm-linux-androideabi-gcc ./builds/unix reglas de configuración ./builds/unix/unix.mk

Si esto no se corresponde con su sistema o configuración, elimine el archivo `config.mk ''de este directorio y luego lea el archivo INSTALAR para obtener ayuda.

De lo contrario, simplemente escriba make'' again to build the library, or haga refdoc'' para construir la referencia API (este último necesita python).

cd compila / unix; / bin / sh ./configure ''--with-sysroot = / cygdrive / d / Development / Android / ndk-standalone-15 / sysroot'' ''--host = arm-linux-androideabi'' ''--prefix = / ft2tmp'' ''--build ='' ''--without-zlib'' ''--with-png = no'' comprobando el tipo de sistema de compilación ... x86_64-unknown-cygwin comprobando el tipo de sistema host ... arm-unknown-linux-androideabi buscando arm-linux-androideabi-gcc ... arm-linux-androideabi-gcc comprobando si el compilador de C funciona ... no configure: error: in /cygdrive/d/Development/tmp/freetype2/builds/unix'': configure: error: C compiler cannot create executables See config.log ''para más detalles compilaciones / unix / detect.mk: 86: receta para'' configuración ''de destino que falló make: * [setup] Error 77

Algunos del archivo config.log:

Configuración de gcc versión 4.8 (GCC): 2925: $? = 0 configure: 2914: arm-linux-androideabi-gcc -V> & 5 arm-linux-androideabi-gcc.exe: error: opción de línea de comando no reconocida ''-V'' arm-linux-androideabi-gcc.exe: error fatal: ninguna compilación de archivos de entrada finalizada. configurar: 2925: $? = 1 configurar: 2914: arm-linux-androideabi-gcc -qversion> & 5 arm-linux-androideabi-gcc.exe: error: opción de línea de comando no reconocida ''-qversion'' arm-linux-androideabi-gcc.exe: error fatal: ninguna compilación de archivos de entrada finalizada. configurar: 2925: $? = 1 configurar: 2945: verificar si el compilador de C funciona configura: 2967: arm-linux-androideabi-gcc --sysroot = / cygdrive / d / Development / Android / ndk-standalone-15 // sysroot -I / cygdrive / d / Desarrollo / Android / ndk-standalone-15 // sysroot / usr / include -I / cygdrive / d / Development / Android / ndk-standalone-15 // include -L / cygdrive / d / Development / Android / ndk-standalone -15 // sysroot / usr / lib -L / cygdrive / d / Development / Android / ndk-standalone-15 // lib conftest.c> & 5 d: / development / android / ndk-standalone-15 / bin / .. /lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: error: no se puede abrir crtbegin_dynamic.o: no existe dicho archivo o directorio d: / development / android / ndk-standalone-15 / bin /../ lib / gcc / arm-linux-androideabi / 4.8 /../../../../ arm-linux-androideabi / bin / ld.exe: error: no se puede abrir crtend_android.o: ningún archivo o directorio d: / development / android / ndk-standalone-15 / bin /../ lib / gcc / arm-linux-androideabi / 4.8 /../ ../../../arm-linux-androideabi/bin/ld.exe: error: no se puede encontrar -lc d: / development / androi d / ndk-standalone-15 / bin /../ lib / gcc / arm-linux-androideabi / 4.8 /../../../../ arm-linux-androideabi / bin / ld.exe: error : no se puede encontrar -ldl collect2.exe: error: ld devuelto 1 configuración de estado de salida: 2971: $? = 1 configurar: 3009: resultado: no configurar: error

Entonces mi pregunta es ¿cómo debo hacer esto correctamente?

EDITAR:

Utilicé unset en CPPFLAGS y LDFLAGS y usé ./configure con --with-sysroot flag, y ahora está funcionando bien. El siguiente problema es que cuando uso

make

Obtuve el siguiente error:

$ make ./builds/unix/libtool --mode = compilar arm-linux-androideabi-gcc -pedantic -ansi -I / cygdrive / d / Development / tmp / freetype2 / objs -I./builds/unix -I / cygdrive / d / Desarrollo / tmp / freetype2 / include -c -Wall -g -O2 -DFT_CONFIG_OPTION_SYSTEM_ZLIB -DFT_CONFIG_CONFIG_H = "" -DFT2_BUILD_LIBRARY -DFT_CONFIG_MODULES_H = "" -o /cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo /cygdrive/d/Development/tmp/freetype2/src/base/ftsystem.c libtool: compilar: arm-linux-androideabi-gcc -pedantic -ansi -I / cygdrive / d / Development / tmp / freetype2 / objs -I. / builds / unix -I / cygdrive / d / Development / tmp / freetype2 / include -c -Wall -g -O2 -DFT_CONFIG_OPTION_SYSTEM_ZLIB "-DFT_CONFIG_CONFIG_H =" -DFT2_BUILD_LIBRARY "-DFT_CONFIG_MODULES_H =" / cygdrive / d / Development / tmp / freetype2 /src/base/ftsystem.c -fPIC -DPIC -o /cygdrive/d/Development/tmp/freetype2/objs/.libs/ftsystem.o arm-linux-androideabi-gcc.exe: error: / cygdrive / d / Desarrollo / tmp / freetype2 / src / base / ftsystem.c: No existe ningún archivo o directorio arm-linux-androideabi-gcc.exe: f error grave: no se finalizó la compilación de los archivos de entrada. /cygdrive/d/Development/tmp/freetype2/builds/freetype.mk:207: receta para el destino ''/cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo'' make fallido: * [/ cygdrive / d / Desarrollo / tmp / freetype2 / objs / ftsystem.lo] Error 1


NDK para Windows no depende de Cygwin, y lo que es peor: no reconoce /cygdrive/... rutas. Intenta usar D:/Development/tmp/freetype2 .


Cuando se trata de la compilación cruzada de la biblioteca, que están escritos en C, necesitamos NDK. Pero compilar ese tipo de biblioteca en Windows es muy difícil y, a veces, atascado. Te aconsejo que pruebes la compilación en Linux. Definitivamente será compilado


Debe establecer la ruta del estilo de Windows que proporciona el lugar donde se encuentra freetype2. Aquí se explica cómo incluir en su ruta de acceso del entorno de Windows las bibliotecas y archivos que está utilizando para su desarrollo en Android . Lo mismo que debes hacer para el freetype2 .

Puede ser útil verificar estas referencias:

Como probablemente observará, la mayor parte del mejor material disponible para desarrollar aplicaciones de Android está en Linux:

En caso de que realmente se tome en serio el desarrollo de Android, valdría la pena considerar mover su desarrollo a una plataforma Linux.

También debería echar un vistazo al OpenGL Getting Started , que proporciona varios tutoriales sobre cómo trabajar con OpenGL en Linux , Windows y MacOS. Adoptar un enfoque gradual paso a paso es más productivo para desarrollar con éxito sus habilidades de desarrollo OpenGL.


Primero, prepare una cadena de herramientas NDK independiente. Ver https://.com/a/24978903/192373 . Usé los siguientes parámetros:

bash-3.1$ d:/dev/Android/ndk/build/tools/make-standalone-toolchain.sh --platform=android-14 --toolchain=arm-linux-androideabi-4.8 --system=windows-x86_64 --arch=armv7a

Luego, asegúrese de tener el trabajo /usr/bin/gcc .

bash-3.1$ ./configure --host=arm-linux-androideabi --prefix=d:/Dev/Android/standalone-toolchain-armv7a-android-17 --without-zlib --with-png=no

Finalmente, corro make y veo

Directory of d:/dev/freetype-2.5.3/objs/.libs 27/07/2014 10:43 3,462,596 libfreetype.a 27/07/2014 10:43 960 libfreetype.la 27/07/2014 10:43 961 libfreetype.lai 27/07/2014 10:43 2,320,272 libfreetype.so