2014-07-19 12 views
7

Sto cercando di cross-compilazione Freetype 2.5.3, così ho potuto usarlo con il mio progetto Android NDK OpenGL ES 2, ma non sono sicuro come farlo. Sto usando Cygwin su Windows. Ho già cercato e letto molte cose a riguardo, ma ho ancora bisogno di aiuto.cross-compilazione Freetype 2.5.3 per Android

ho esportato alcune bandiere in 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" 

E poi ho cercato di cross-compilazione freetype:

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

ma ho ottenuto un errore:

FreeType build system -- automatic system detection

The following settings are used:

platform unix compiler
arm-linux-androideabi-gcc configuration directory ./builds/unix configuration rules ./builds/unix/unix.mk

If this does not correspond to your system or settings please remove the file `config.mk' from this directory then read the INSTALL file for help.

Otherwise, simply type make' again to build the library, or make refdoc' to build the API reference (the latter needs python).

cd builds/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' checking build system type... x86_64-unknown-cygwin checking host system type... arm-unknown-linux-androideabi checking for arm-linux-androideabi-gcc... arm-linux-androideabi-gcc checking whether the C compiler works... no configure: error: in /cygdrive/d/Development/tmp/freetype2/builds/unix': configure: error: C compiler cannot create executables See config.log' for more details builds/unix/detect.mk:86: recipe for target 'setup' failed make: * [setup] Error 77

Alcuni di il file config.log:

gcc version 4.8 (GCC) configure:2925: $? = 0 configure:2914: arm-linux-androideabi-gcc -V >&5 arm-linux-androideabi-gcc.exe: error: unrecognized command line option '-V' arm-linux-androideabi-gcc.exe: fatal error: no input files compilation terminated. configure:2925: $? = 1 configure:2914: arm-linux-androideabi-gcc -qversion >&5 arm-linux-androideabi-gcc.exe: error: unrecognized command line option '-qversion' arm-linux-androideabi-gcc.exe: fatal error: no input files compilation terminated. configure:2925: $? = 1 configure:2945: checking whether the C compiler works configure:2967: arm-linux-androideabi-gcc --sysroot=/cygdrive/d/Development/Android/ndk-standalone-15//sysroot -I/cygdrive/d/Development/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: cannot open crtbegin_dynamic.o: No such file or directory d:/development/android/ndk-standalone-15/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot open crtend_android.o: No such file or directory d:/development/android/ndk-standalone-15/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot find -lc d:/development/android/ndk-standalone-15/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot find -ldl collect2.exe: error: ld returned 1 exit status configure:2971: $? = 1 configure:3009: result: no configure: failed

Quindi la mia domanda è come dovrei farlo correttamente?

EDIT:

ho usato non impostato su CPPFLAGS e LDFLAGS e utilizzati ./configure con --with-sysroot bandiera, e ora sta facendo bene. problema successivo è che quando uso

make 

ottengo il seguente errore:

$ make ./builds/unix/libtool --mode=compile 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="" -o /cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo /cygdrive/d/Development/tmp/freetype2/src/base/ftsystem.c libtool: compile: 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/Development/tmp/freetype2/src/base/ftsystem.c: No such file or directory arm-linux-androideabi-gcc.exe: fatal error: no input files compilation terminated. /cygdrive/d/Development/tmp/freetype2/builds/freetype.mk:207: recipe for target '/cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo' failed make: * [/cygdrive/d/Development/tmp/freetype2/objs/ftsystem.lo] Error 1

risposta

6

si deve impostare il percorso di stile Windows che fornisce in cui si trova freetype2. Ecco come includere nel tuo percorso ambiente Windows le librerie ei file che si sta utilizzando per il vostro sviluppo in Android. La stessa cosa che devi fare per lo freetype2.

Si possono trovare utile per controllare questi riferimenti:

Come probabilmente osservare, la maggior parte dei migliori material disponibili sviluppare Andro Applicazioni id sono su Linux:

enter image description here

Nel caso in cui siete veramente sul serio circa lo sviluppo di Android, sarebbe valsa la pena di prendere in considerazione lo spostamento vostro sviluppo di una piattaforma Linux.

Si dovrebbe anche avere uno sguardo sul OpenGL Getting Started, che fornisce diversi tutorial su come lavorare con OpenGL su Linux, Windows e MacOS. Prendendo un delicato approccio step by step è più produttivo di crescere con successo le vostre abilità di sviluppo OpenGL.

+2

Ci scusiamo per il ritardo di risposta! Il problema era effettivamente con i percorsi, e sono riuscito a compilarlo su Linux con successo. Grazie per i link, ne trovo un po 'da solo, e controllerò anche il resto! – ngspkinga

1

NDK per Windows non dipende da Cygwin, e peggio: non riconosce /cygdrive/... percorsi. Prova ad usare D:/Development/tmp/freetype2.

3

Quando si tratta di compilare in modo incrociato le librerie che sono scritte in C, richiediamo NDK. Ma compilare questo tipo di libreria su Windows è molto difficile e talvolta bloccato. Ti consiglio di provare la compilation su Linux. Verrà compilato definitivamente

+0

Grazie per l'aiuto! Ha funzionato davvero su Linux. – ngspkinga

+0

L'ho già fatto quando ho scritto la risposta! – ngspkinga

0

Innanzitutto, preparare una toolchain autonoma NDK. Vedi https://stackoverflow.com/a/24978903/192373. Ho usato i seguenti parametri:

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 

Quindi, assicurarsi che avete a lavorare /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 

Infine, corro e vedo make

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 
Problemi correlati