2013-02-15 3 views
7

Je me demande si quelqu'un a réussi à construire le nouveau SDL2 avec la chaîne d'outils de l'Android NDK (r8d). SDL2 semble être très proche de la version (depuis hier ce n'est pas "SOUS CONSTROCTION plus: http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d) .Il est livré avec un Android.mk et compile juste bien en suivant les instructions dans le fichier README.android fourni. Ma question est de savoir s'il n'y a vraiment pas de build basé sur automake disponible ou sera disponible pour le compiler sur Android, ou quelque chose ne va pas avec ma configuration de toolchainConstruire SDL2 avec la chaîne d'outils NDK

J'ai installé la toolchain NDK en suivant les instructions de la documentation située à $ NDK/doc/STANDALONE-TOOLCHAIN.html J'utilise gcc 4.6 Voici un environnement que j'utilise:

#!/bin/sh 
export TOOLCHAIN=$HOME/Android/android-14-arm 
export PATH=$TOOLCHAIN/bin:$PATH 
export SYSROOT=$TOOLCHAIN/sysroot 
export CROSS_COMPILE="arm-linux-androideabi" 
export CC=$CROSS_COMPILE-gcc 
export CXX=$CROSS_COMPILE-g++ 
export CPP=$CROSS_COMPILE-cpp 
export CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" 
export LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8" 
echo "Compiler set up for ARM 14" 

Les configure params:

./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local 

Avec la même configuration i construit avec succès libjpeg-turbo v8 et SDL_image. Le script configure reconnaît le compilateur croisé, et construit le makefile, cependant, il trouve X11, ne peut pas voir l'OpenGL ES ... Le make échoue:

In file included from /usr/include/features.h:378:0, 
      from /usr/include/sys/types.h:27, 
      from ./include/SDL_stdinc.h:35, 
... 

J'ai vérifié le journal de configuration, i Je n'ai aucune idée d'où vient le "/ usr/include". Mais en fait, le makefile généré ajoute cette ligne dans le EXTRA_CFLAGS au compilateur. Le document NDK fait référence à --with-sysroot = $ SYSROOT en option, je l'ai inclus pour voir s'il résout le problème, mais cela n'a pas aidé. Dans un dernier effort j'ai édité manuellement le Makefile, en corrigeant cette référence, et maintenant le compilateur s'est plaint de X11.h. AFAIK Android n'a rien à voir avec X11, donc je suppose que tout l'arbre de construction complètement inapproprié à utiliser avec NDK.

J'ai également essayé une configuration différente, trouvée dans un thread plus ancien here. Ni la définition -DANDROID -mandroid -fomit-frame-pointer ni changer revenir à -march = ARMv7-a--mfloat abi = softfp -mfpu = VFP -mthumb » a résolu le problème.

Sur les projets précédents, j'avais Pour rafraîchir config.guess, et config.sub afin d'obtenir mon compilateur reconnu.SDL ne semble pas utiliser ceux.En outre, aucun Makefile.ac ou Makefile.am est livré avec SDL pour travailler, et aucun modèle pour l'autre plate-forme pourrait Je n'ai jamais eu à faire avec makefile, je n'ai vraiment aucune chance de résoudre ces problèmes, même si ça réussit, j'ai probablement besoin d'un outil de configuration. , puisque je n'ai aucune idée de comment ndk-build parvient à installer SDL2 sans scripts de configuration

Compiler les sources SDL avec le projet ensemble est la seule solution - mais laide. Je voudrais déployer les fichiers de lib et d'en-tête nécessaires en installant.

J'espère que la solution est quelque chose chose vraiment facile et évident que je viens de ne pas penser à ...

+0

L'extrait d'erreur n'est pas vraiment l'erreur. Vous avez manqué de mettre dans l'erreur, et tout ce qui est là est le fichier contenant l'erreur. – Samveen

+0

Construire SDL2 en utilisant configure; make devrait fonctionner en théorie, mais aucun des devs ne l'a construit comme ça, c'est la raison pour laquelle il est buggé. N'hésitez pas à signaler les bugs que vous trouvez (et les correctifs!) à Bugzilla https://bugzilla.libsdl.org Une chose que vous pouvez essayer, si vous avez envie d'expérimenter, est de configurer configure, après cette copie incluez/SDL_config_android.h au-dessus de SDL_config.h, puis exécutez make, peut-être cela fonctionne (SDL_config_android.h est un en-tête de config pré-cuit pour Android qui devrait avoir des paramètres sains). – gabomdq

Répondre

Questions connexes