Berechtigungsverweigerungsfehler in Makefile mit Go
Obwohl „go run“ erfolgreich ausgeführt wurde. Direkt stoßen Benutzer auf Fehler, denen die Berechtigung verweigert wurde, wenn sie „make run“ aufrufen, um denselben Befehl über ein Makefile auszuführen. Diese Diskrepanz kann auf eine Feinheit innerhalb von GNU Make zurückgeführt werden, wie die Debugging-Ausgabe „make -d“ zeigt.
Das Problem tritt auf, wenn GNU Make versucht, die ausführbare Go-Datei zu finden. Wenn ein Verzeichnis mit dem Namen „go“ in einem Verzeichnis vorhanden ist, das in der Umgebungsvariablen PATH angegeben ist (vor dem tatsächlichen Verzeichnis, das die ausführbare Datei enthält), zielt GNU Make fälschlicherweise auf dieses Verzeichnis und nicht auf die ausführbare Datei ab.
Zum Beispiel, wenn a Wenn das Verzeichnis „/usr/bin/go/“ vorhanden ist und „/usr/bin“ sich im PFAD befindet, wird GNU Make beim Versuch, „go run“ auszuführen, auf einen Fehler „Berechtigung verweigert“ stoßen. Um dieses Problem zu beheben, stellen Sie sicher, dass Ihr PATH keine Verzeichnisse mit „go“-Unterverzeichnissen enthält.
Wenn das Entfernen der problematischen Verzeichnisse aus dem PATH nicht möglich ist, können Sie GNU make anweisen, eine Shell aufzurufen, indem Sie a hinzufügen Semikolon „;“ zur Makefile-Zieldefinition hinzufügen. Dadurch wird sichergestellt, dass die ausführbare Go-Datei ordnungsgemäß aufgelöst wird und die Fehler „Berechtigung verweigert“ behoben werden.
run: go run . ;
Das obige ist der detaillierte Inhalt vonWarum führen Makefile-Befehle mit „go run' zu Fehlern, bei denen die Berechtigung verweigert wurde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!