2011-11-14 6 views
9

Je rencontre des problèmes avec le dernier Android NDK:problèmes avec Android NDK-7 et AWK

[email protected]:~$ ndk-build 
/home/ligi/bin/android-ndk/prebuilt/linux-x86/bin/awk: 1: ELF: not found 
/home/ligi/bin/android-ndk/prebuilt/linux-x86/bin/awk: 4: Syntax error: word unexpected (expecting ")") 
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !  
/home/ligi/bin/android-ndk/build/core/init.mk:258: *** Android NDK: Aborting. . Stop. 

[email protected]:~$ `echo $HOST_AWK --v` 
GNU Awk 3.1.7 

Je suis sur la fourmi stock ubuntu totalement d'idées et de bons mots-clés pour les recherches

Répondre

33

J'avais aussi ce problème et trouvé ce site japonais avec des problèmes similaires:

http://d.hatena.ne.jp/yohpapa/20111113/1321198570

J'espère perplexes les trucs Google Traduction correctement - dans tous les cas, essentiellement dans la nouvelle installation NDK, trouver ce répertoire:

..../android-ndk-r7/prebuilt/linux-x86/bin 

et renommer le fichier « awk » là pour quelque chose d'autre comme « awk_ »

Je l'ai fait et ndk_build travaille maintenant pour moi. Si je suis en train de lire les fichiers make, il y a un fichier appelé init.mk qui remplace votre HOST_AWK par la valeur prédéfinie s'il le trouve ... donc renommer le fichier awk revient par défaut à votre gawk.

espoir qui aide

Kibi

+1

Chose drôle. A travaillé pour moi aussi, merci! – simonescu

+0

Cette solution s'applique lorsque vous exécutez une version 32 bits de Linux. Ce problème ne se produit pas sur une distribution Linux 64. – Samuel

+3

Notez que sur Windows, l'équivalent a fonctionné pour moi, sauf que j'ai dû renommer le fichier awk.exe dans le dossier/windows/bin préfabriqué. – aardvarkk

6

Le problème est le NDK exécutable/prebuild/linux-x86/awk est compilé pour x86_64, il est pas exécuté dans un noyau 32 bits

+0

Ah, merci d'expliquer que Joel – Kibi

1
  1. Mise à jour votre awk local.
  2. Enlever l'awk dans android-ndk lui-même.

Cela devrait résoudre le problème.

0

J'avais un problème avec différentes versions de awk sur windows. Cette modification utilise la version cygwin de awk depuis une console cygwin et la version prédéfinie depuis une console dos.

Ajouter à init.mk:

ifeq ($(HOST_OS),cygwin) 
     HOST_AWK := /bin/awk 
endif 
1

Accédez à votre <ndk_dir>\build\core\ et init.mk ouvert dans un éditeur de texte, par exemple Bloc-notes

Remplacer la ligne suivante

HOST_AWK := $(wildcard $(HOST_PREBUILT)/awk$(HOST_EXEEXT)) 

avec

ifeq ($(HOST_OS),cygwin) 
     HOST_AWK := $(wildcard $(HOST_PREBUILT)/gawk$(HOST_EXEEXT)) 
else 
     HOST_AWK := $(wildcard $(HOST_PREBUILT)/awk$(HOST_EXEEXT)) 
endif 

@Tod: Merci, je vous allusion ici

qui fonctionne.

1

J'ai rencontré le même problème avec eclipse sur windows avec cygwin et NDK8.

J'ai dû ajouter HOST_AWK comme une variable d'environnement dans les propriétés du projet -> c/C++ Construire -> Environnement avec la valeur /cygdrive/[cygwin installdir]/bin/gawk

(En plus d'avoir à régler le c/C++ construire commande à bash -c ndk-build)