CreateProcess: Keine solche Datei oder Verzeichnis
Lesezeit: 6 Minuten
Schlaflos
Ich erhalte diesen Fehler, wenn ich versuche, GCC außerhalb seines Installationsverzeichnisses auszuführen (E:\MinGW\bin).
Sagen wir also, ich bin dabei E:\code und haben eine Datei namens one.c. Betrieb: gcc one.c -o one.exe wird mir diesen Fehler geben:
gcc: CreateProcess: No such file or directory
Die einzige Problemumgehung besteht darin, zu seinem Installationsverzeichnis zu navigieren, gcc von dort aus auszuführen und alle anderen Pfade anzugeben. Meine Umgebungsvariable Path enthält E:\MinGW\bin.
Irgendwelche Vorschläge zur Behebung dieses Problems? Ich verwende Windows XP SP3.
Haben Sie es dem Pfad hinzugefügt, NACHDEM Sie diesen Fehler mit der Windows-Umgebungsvariablen-GUI erhalten haben? Wenn Sie dies getan haben und versuchen, gcc in derselben Befehlsshell auszuführen, die Sie ursprünglich verwendet haben, wird es nicht funktionieren. Diese Shell hat eine eigene Kopie von PATH, die nicht geändert wurde, als Sie die GUI verwendet haben. Sie können dies sehen, indem Sie echo %PATH% in Ihre Befehlsshell eingeben. Der schnellste Weg, dies zu beheben, wäre, sich abzumelden und erneut anzumelden.
– George
3. Oktober 2010 um 4:01 Uhr
Ah, ich dachte mir, dass es ausreichen würde, nur eine neue Instanz von CMD.exe zu erzeugen, um die neue Variable “PATH” zu verwenden. Es funktioniert jedoch gut, jetzt, wo ich versucht habe, mich abzumelden und einzuloggen, scheint es gut zu funktionieren. Vielen Dank!
– Schlaflos
3. Oktober 2010 um 11:49 Uhr
Es kann behoben werden, wenn Sie Ihre Umgebungsvariable temp dir in ein Verzeichnis ändern, dessen Name keine Leerzeichen enthält
– Jessie Lesben
4. Januar 2021 um 12:50 Uhr
Ich hatte ein ähnliches Problem, das dadurch verursacht wurde, dass der C++-Compiler nicht installiert wurde. In meinem Fall habe ich .cpp-Dateien für eine Python-Erweiterung kompiliert, aber der Compiler wird zuerst als c:\mingw\bin\gcc.exe aufgerufen.
Intern würde gcc.exe bemerken, dass es aufgefordert wurde, eine .cpp-Datei zu kompilieren. Es würde versuchen, g++.exe aufzurufen und mit derselben Fehlermeldung fehlschlagen:
gcc.exe: CreateProcess: keine solche Datei oder Verzeichnis
Die Antwort von Luis Bruno hat mein Problem behoben. Stellen Sie sicher, dass Sie den richtigen Compiler installiert haben. Ich versuche, .cpp-Dateien mit gcc.exe zu kompilieren, während g++ eigentlich erforderlich ist. mingw-get install g++ hat den Fehler gelöscht.
– Neil Fan
3. August 2011 um 2:58 Uhr
Herbert Amaral
Entsprechend Code::Blocks-Wikimüssen Sie hinzufügen C:\MinGW\libexec\gcc\mingw32\MinGW-Version zu deinem PATH. Es ist kein Neustart erforderlich, aber Sie müssen ein anderes Terminal öffnen, um das Neueste zu erhalten PATH die Einstellungen.
Für MinGW-w64 ist das <mingw install directory>\libexec\gcc\x86_64-w64-mingw32\4.7.0\
Nö… hat mir kein bisschen geholfen.
– David S
25. Januar 2012 um 5:27 Uhr
Es war auch mein Problem. Ich bin auf 64bit gcc (mingw64-Projekt). Das Hinzufügen von \libexec\gcc\x86_64-w64-mingw32\4.7.0\ hat das Problem behoben.
– David A.
19. März 2013 um 10:04 Uhr
In meinem Nur-Befehlszeilen-Fall wurde das Problem behoben, indem umgekehrt die PATH. ProcMon war sehr hilfreich bei der Diagnose.
– Wadzim
3. August 2016 um 13:42 Uhr
Pedro Henrique A. Oliveira
Ich hatte gerade dieses Problem.
In meinem Fall lag das Problem an Problemen beim Herunterladen der Pakete für GCC. Das Programm mingw-get dachte, es hätte den Download beendet, aber das tat es nicht.
Ich wollte GCC aktualisieren, also habe ich mingw-get verwendet, um die neuere Version zu erhalten. Aus irgendeinem Grund dachte mingw-get, dass der Download für eine bestimmte Datei abgeschlossen sei, aber das war es nicht. Als es ging, um die Datei zu extrahieren, gab es wohl einen Fehler aus (den ich mir nicht einmal die Mühe machte, nachzusehen – ich habe einfach “mingw-get update && mingw-get install mingw32-gcc” ausgeführt und es dort gelassen).
Um das Problem zu lösen, entfernte ich gcc, indem ich „mingw-get remove mingw32-gcc“ ausführte, und entfernte auch die Paketdatei (diejenige, die mingw-get nicht vollständig heruntergeladen hat), die sich im mingw-Cache-Ordner befand („C:\MinGW\ var\cache\mingw-get\packages” in meinem System) und dann den Installationsbefehl erneut ausgeführt. Es hat die fehlenden Teile von GCC heruntergeladen und installiert (es hatte das Paket gcc-core nicht vollständig heruntergeladen).
Das hat mein Problem gelöst.
Interessanterweise war mingw-get schlau genug, den Download von gcc-core fortzusetzen, selbst nachdem ich die Paketdatei im Cache-Ordner gelöscht und auch das Paket mingw32-gcc entfernt hatte.
Ich denke, das grundlegendere Problem war, dass cc1 nicht vorhanden war, da gcc-core-Dateien nicht installiert waren. Und gcc verwendet cc1. Ich vermute, dass, als gcc versuchte, cc1 zu starten, CreateProcess irgendwo verwendet wurde, um den Pfad von cc1 zu übergeben, der nicht der Pfad einer vorhandenen Datei war. Daher die Fehlermeldung.
Meine Festplatte war während der Installation voll und ich denke, das hat das Problem für mich verursacht, auch wenn mingw immer noch ohne Warnung installiert wurde.
– Addierer
15. Dezember 2012 um 20:32 Uhr
Das ist also eine dumme Fehlermeldung, weil sie es Ihnen nicht sagt was Datei kann es nicht finden.
Führen Sie den Befehl erneut mit dem Verbose-Flag aus gcc -v um zu sehen, was gcc vorhat.
In meinem Fall ist es passiert, dass es versucht hat, anzurufen cc1plus. Ich habe nachgesehen, das habe ich nicht. Installierte den C++-Compiler von mingw und dann tat ich es.
znatz
Ich hatte genau das gleiche Problem.
Nach einer erneuten Überprüfung meiner PATHbemerkte ich, dass ich beide installiert hatte Mingw (64bit) und Cygwin (32-Bit). Das Problem ist, dass beides Mingw und Cygwin haben g++.
Durch Deaktivieren des Pfades von Cygwinder Fehler ist verschwunden.
In der Ader “Gib einem Mann einen Fisch, ernähre ihn für einen Tag; bringe einem Mann das Fischen bei, werde ihn für das ganze Wochenende los”
g++ --help
zeigt Compiler-Optionen. Die Option g++ -v hilft:
-v Display the programs invoked by the compiler
Durchsuchen Sie die Ausgabe nach falschen Pfaden. In meinem Fall der ursprüngliche Befehl:
was die Meldung “keine solche Datei oder kein solches Verzeichnis” erklären würde.
Das Segment „../lib/gcc/arm-none-eabi/4.5.1/“ stammt aus integrierten Spezifikationen:
g++ -dumpspecs
Wadzim
Ich hatte das gleiche Problem, aber keine der derzeit aufgeführten Lösungen hat beim ersten Versuch geholfen.
-v Option gab keine zusätzlichen Hinweise.
Zugreifen musste ProcMon um die Wurzel des Problems finden zu können.
Schluss machen g++ Prozessdateiaktivität ergab zahlreiche Suchversuche cc1plus auf verschiedenen Pfaden ausführbar. Darunter waren Pfade zu alten GCC-Versionen.
Aber diese alte Version befand sich in einem separaten Ordner und wurde von der neuen Version, die ich auszuführen versuchte, überhaupt nicht referenziert.
Endlich wurde der veraltete Pfad in der Umgebungsvariable %PATH% des Systems gefunden. Nach dem Entfernen begann die neue Version fehlerfrei zu arbeiten.
Nachdem ich dieses Problem jahrelang verfolgt hatte, hatte ich ein ähnliches Problem in Bezug auf cc1/cc1plus. GCC hat aus irgendeinem Grund in allen Pfaden im PATH nach cc1.exe gesucht. Nachdem ich nirgendwo etwas gefunden hatte, gab gcc einen Fehler mit CreateProcess: No such file or directory. Passenden cc1.exe-Pfad zu PATH hinzugefügt und Build war erfolgreich.
– Casey Kuball
13. Juli 2021 um 20:33 Uhr
Gute Idee, ProcMon zu verwenden, da der Fehler nicht so ausführlich ist und es anscheinend viele mögliche Ursachen für diese spezifische (kryptische) Fehlermeldung gibt. In meinem Fall fand ich heraus, dass g++ suchte as (der Monteur), der fehlte. Die Installation hat mein Problem endlich gelöst.
– wovano
30. August 2021 um 9:25 Uhr
14123500cookie-checkCreateProcess: Keine solche Datei oder Verzeichnisyes
Haben Sie es dem Pfad hinzugefügt, NACHDEM Sie diesen Fehler mit der Windows-Umgebungsvariablen-GUI erhalten haben? Wenn Sie dies getan haben und versuchen, gcc in derselben Befehlsshell auszuführen, die Sie ursprünglich verwendet haben, wird es nicht funktionieren. Diese Shell hat eine eigene Kopie von PATH, die nicht geändert wurde, als Sie die GUI verwendet haben. Sie können dies sehen, indem Sie echo %PATH% in Ihre Befehlsshell eingeben. Der schnellste Weg, dies zu beheben, wäre, sich abzumelden und erneut anzumelden.
– George
3. Oktober 2010 um 4:01 Uhr
Ah, ich dachte mir, dass es ausreichen würde, nur eine neue Instanz von CMD.exe zu erzeugen, um die neue Variable “PATH” zu verwenden. Es funktioniert jedoch gut, jetzt, wo ich versucht habe, mich abzumelden und einzuloggen, scheint es gut zu funktionieren. Vielen Dank!
– Schlaflos
3. Oktober 2010 um 11:49 Uhr
Es kann behoben werden, wenn Sie Ihre Umgebungsvariable temp dir in ein Verzeichnis ändern, dessen Name keine Leerzeichen enthält
– Jessie Lesben
4. Januar 2021 um 12:50 Uhr