gcc échoue avec spawn: pas de tel fichier ou répertoire
J'ai téléchargé
Ruben construire de
Cygwin GCC.
Cependant, au moment de l'exécution, il semble impossible de compiler tous les fichiers
$ touch foo.c $ gcc toto.c gcc: erreur: spawn: Aucun fichier ou répertoire
Comme une solution de contournement, j'ai trouvé que c'
i686-w64-mingw32-gcc foo.c
source d'informationauteur Steven Penny
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce même problème sur Cygwin64, et la solution a été la VOIE d'..un peu.
S'avère, il existe des copies de la gcc dans le répertoire /usr/bin et /bin (au moins, il est dans mon installation).
Exécutant la commande /bin/gcc a échoué avec l'erreur ci-dessus -- je suppose en raison de, à tort, les chemins d'accès relatifs???
Exécutant la commande /usr/bin/gcc fonctionne comme prévu!
Dans mon cas, le "problème" c'est que j'avais par inadvertance injecté "/bin" dans ma variable d'environnement PATH, résultant dans /bin/gcc en cours d'exécution, au lieu de /usr/bin/gcc. Enlever le "/bin" du chemin a résolu le problème.
Pas encore clair pourquoi il y a deux gcc binaires (qui semblent être identiques) dans différents endroits... mais peut-être que le Cygwin gourous de répondre à cette question; ou peut-être que mon installation est juste foo de prescription.
J'ai eu le même problème et l'a résolu en installant le g++ paquet en plus gcc-core
De Ruben versions sont pas Cygwin GCC paquets, ils sont plutôt de la croix-compilateurs qui fonctionnent sur diverses plates-formes, mais la cible natif de Windows à l'aide de la MinGW-w64 de la chaîne d'.
Dans tous les cas, vous ne devriez pas les utiliser sur Cygwin. Si vous voulez compiler Cygwin exécutables, installez le gcc4 paquets; si vous voulez le cross-compiler pour Windows, installer le mingw64-i686-gcc (pour Win32) ou mingw64-x86_64-gcc (Win64) de paquets au lieu.
Gcc n'est pas vraiment le compilateur. C'est un avant la fin de l'émission, qui orchestre l'exécution de toute compilateur, assembleur et l'éditeur de liens de composants. Généralement, ces autres sont compilés séparément des programmes.
Donc, gcc est d'essayer (genre de) pour vous dire qu'il ne peut pas trouver le compilateur. Je suppose qu'il doit être sur votre CHEMIN ou dans un emplacement prévu.
Si vous exécutez ce à partir d'une zone de Windows DOS puis il a certainement besoin d'un windows paramètre de CHEMIN.
J'aime installer Cygwinassurez-vous d'inclure rxvt. À ce stade, vous pouvez configurer un purement sh(1) et de chemin de votre environnement est un peu plus civilisé.
Cette erreur se produit chaque fois que cygwin cc ne peut pas trouver un fichier.
Pour ceux qui exécutent des choses dans cygwin bin directement de un shell de Windows, un piège à regarder dehors pour est Windows qui vous permettent d'exécuter des programmes à partir de la ligne de commande comme ceci:
Avis qu'il n'y a pas de barre oblique entre
e:
etcyg
.Donc cette commande avec succès commencer cygwin gcc à partir du shell de Windows, mais à mi-chemin par le biais de l'exécuter à l'erreur parce que certaines composant(s) de
gcc
utilisera le premier argument de l'entréee:cyg/bin/gcc
et à la différence de mingw, ce n'est pas un chemin d'accès valide pour cygwin gcc.Cela peut être corrigé en changeant simplement la commande:
Avis de la barre oblique entre
e:
etcyg
.Similaire gotcha est dû à Windows permettant chemins comme
e:/../folder1
comme une alternative àe:/folder1
. Windows ne vous donne pas une erreur si vous êtes dans le dossier racine et d'essayer d'aller jusqu' un autre dossier à l'aide de..
.De sorte que vous pourriez commencer à courir cygwin gcc à l'aide de la commande:
..ou même:
Toutefois, il ne pourrait pas à mi-chemin avec
gcc: error: spawn: No such file or directory
parce que certains composant(s) de cygwin gcc serait de tenter de l'exécutergcc
en utilisant le premier argument de la commande d'entrée lui-même, et à la différence de mingw,e:/../cyg/bin/gcc
n'est pas reconnu comme un chemin d'accès valide par cygwin, parce que vous allez jusqu' un dossier quand il n'y a pas de dossier pour aller jusqu'à.Comme ci-dessus, cela peut être corrigé en gardant le chemin d'accès valide:
Assurez-vous que la source de l'extension de fichier en minuscules (ex. principal.c, pas principal.C):
Cela ne concerne que les cas de l'extension de la gcc, le fichier source peut avoir l'extension dans quel cas vous le souhaitez.
Explication: C'est à partir de mon expérimentation avec cygwin et de gcc, je ne connais pas la vraie raison de ce comportement.
J'ai eu le même message d'erreur quand j'ai essayé d'extraire un couple de fichiers exécutables à partir de cygwin répertoire d'installation et copié dans un autre emplacement.
strace m'indique que le fichier n'a pas été trouvé par spawn:
Quand j'ai copié cc1.exe dans l'emplacement par rapport à
il fonctionne très bien.