web-dev-qa-db-fra.com

Erreur de syntaxe: Word inattendu (en attente de ")")

Problème en bref- Sous Linux à chaque fois que nous obtenons l'erreur suivante "Erreur de syntaxe: mot inattendu (attente") "), [...] ?

Problème dans les détails- J'ai essayé de compiler Qt-4.6 selon la chaîne d'outils Sourcery sous Ubuntu 10.04. J'ai suivi les étapes exactes mentionnées sur le lien compilation de Qt-4.6 . Mais j'obtiens l'erreur suivante directement dans l'étape ./configure -

/home/weds/qt-everywhere-opensource-src-4.6.1/bin/qmake: 1: Syntax error: Word unexpected (expecting ")")

En cherchant sur Internet, j'ai trouvé beaucoup de messages concernant cette erreur. Lisez-les tous. Mais toujours sans idée de ce qu'est cette erreur et comment la résoudre. Je serais heureux si quelqu'un m'aiderait à comprendre cette erreur.

P.S 1- La chaîne d'outils Sourcery est présente dans/opt/folder et ma variable PATH la pointe correctement .P.S 2- Cette chaîne d'outils n'a pas été installée manuellement par moi. Au contraire, il a été fourni par un fournisseur sous forme de fichier .tgz que j'ai extrait dans/opt/folder.

Une réponse à cela semble être postée dans les instructions auxquelles vous avez lié.

Certes, c'est un long chemin dans les commentaires _ mais la recherche de qmake: Syntax error: Word unexpected n'a pas pris longtemps.

Citation:

Tej dit: le 4 janvier 2013 à 12h20

Ok, j'ai résolu le problème. C'est très malheureux que les gens ne l'aient pas fait Dites quel est le problème. Le problème est que nous devons utiliser Host qmake. Pour cela, quelle que soit l'exportation (export PATH =/usr/local/arm/4.3.2/bin: $ PATH, etc.), nous l'avons fait au cours de la tslib. l'installation, nous devons annuler tout cela. C'est tout.

J'espère que ça aide quelqu'un

Au cas où ce ne serait pas clair, Tej suggère qu'il semblerait que vous essayez d'exécuter la qmake compilée de façon croisée sur le système hôte.

1
roaima

C'est une erreur signalée par le shell Almquist ou l'un de ses dérivés, comme dash (et dash s'est avéré être l'implémentation par défaut de /bin/sh sur Ubuntu 10.04) lorsqu'un Word est trouvé lors de l'analyse syntaxique d'un script où un ) est attendu à la place, par exemple comme dans cette instruction case:

$ dash -c 'case a in b c) :; esac'
dash: 1: Syntax error: Word unexpected (expecting ")")

En effet, après b, la seule chose attendue après est ) (bien que | soit également autorisé), de sorte que c Word est inattendu.

$ dash -c 'myfunc( something'
dash: 1: Syntax error: Word unexpected (expecting ")")

Cela peut arriver si le script a été écrit ou transféré via un système d'exploitation Microsoft où les fins de ligne de texte sont CRLF au lieu de LF.

UNE

case a in b) cmd1;;
          c) cmd2
esac

le script écrit sur MS-DOS apparaîtra comme:

case a in b) cmd1;;<CR>
          c) cmd2<CR>
esac<CR>

sous Unix et que c serait un extra Word après le <CR> Word.

Ici, il est peu probable que votre erreur indique que le problème se trouve sur la première ligne du script et que la plupart des scripts commencent par la ligne #! /path/to/interpreter she-bang.

Une autre possibilité est que le script que vous essayez d'exécuter a été écrit en supposant que sh était bash et utilise des constructions qui ne sont pas transférables vers d'autres implémentations sh.

Puisque vous utilisez un système d'exploitation obsolète et qui n'est plus maintenu, il est également possible que vous rencontriez un bogue dans cette version de dash. Vous pouvez exécuter dpkg-reconfigure dash et indiquer au système de ne pas utiliser dash pour sh (mais plutôt bash) pour voir si cela aide.

Encore une fois peu probable d'être sur la première ligne.

Ce qui semble plus probable, c’est que ce fichier qmake n’est pas un script, mais un exécutable binaire qui n’est pas reconnu comme tel par le système, par exemple parce qu’il a un format binaire pour la mauvaise architecture ou qu’il a été corrompu lors du transfert.

Dans ce cas, lorsque le système ne reconnaît pas l’exécutable natif, l’appel appelant tente d’exécuter sh sur celui-ci comme s’il s’agissait d’un script Shell et la présence d’un caractère ( dans le fichier pouvait entraîner l'échec de dash avec une telle erreur.

Sur mon système:

$ dash /bin/touch
/bin/touch: 1: /bin/touch: Syntax error: Word unexpected (expecting ")")

Et si vous regardez le contenu de /bin/touch comme s'il s'agissait d'un script, vous verrez:

^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^B^@>^@^A^@^@^@5&@^@^@^@^@^@@^@^@^@^@^@^@^@(ô^@^@...
8
Stephane Chazelas

99% c'est un mauvais transfert de fichier/ascii/mode binaire

essayez d'extraire la chaîne d'outils directement sur le système cible

1