ld.exe: Ausgabedatei kann nicht geöffnet werden … : Zugriff verweigert
Lesezeit: 5 Minuten
Ich habe kürzlich CodeBlocks mit mingw32 auf Windows 7 Ultimate 32bit installiert, um meine C-Kenntnisse abzustauben, aber dieses Problem hat mich etwas ratlos gemacht.
Ich beschloss, einen kurzen Fibonacci-Generator abzufeuern, um sicherzustellen, dass mein Setup funktionierte, aber ich stieß auf eine Hürde.
Das Programm kompiliert, verlinkt und so weiter wie ein Zauber und ich bekomme eine entsprechende ausführbare Datei, die wie erwartet ausgeführt wird.
Die Probleme treten auf, wenn ich versuche erneut zu kompilieren, dann bekomme ich folgendes:
c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied
Ich kann nicht einmal die Berechtigungen der generierten ausführbaren Datei bearbeiten.
Ich habe die üblichen Verdächtigen überprüft:
Ausführbare Datei wird wahrlich nicht ausgeführt.
Der Pfad zur ausführbaren Datei ist für mingw32 les-/schreibbar (andernfalls wäre es nicht möglich, überhaupt zu erstellen)
Ich führe Cygwin in keiner Form aus.
Und nun zum Lustigen: Normalerweise verschwinden alle von mingw32 generierten ausführbaren Dateien, die dieses Verhalten „Zugriff verweigert“ zeigen, nach ein paar Minuten automatisch, ohne dass ich eingreifen muss.
Ich habe das etwas gegoogelt, aber die meisten anderen Ergebnisse waren entweder vage oder nicht anwendbar.
Ich frage mich, ob es eine Windows 7-Sicherheitseinstellung gibt, die mit meinen EXE-Dateien Chaos anrichtet, aber ich kenne mich mit Win 7 nicht so gut aus, dass ich weiß, wo ich mit der Suche beginnen soll.
Hat jemand irgendwelche Ideen?
Hier ist eine Vermutung … wenn Sie in das Verzeichnis bin\Debug bauen, dann macht code::blocks möglicherweise etwas mit seinem integrierten Debugger und hält ein Datei-Handle auf der ausführbaren Datei offen. Versuchen Sie, es für die Veröffentlichung zu erstellen, und prüfen Sie, ob Sie dasselbe Problem haben
– Lappen
5. Oktober 2011 um 0:34 Uhr
Ich denke, @BrianGordons Vermutung ist gut. Wenn das Programm ausgeführt wird, beenden Sie es, bevor Sie versuchen, es neu zu erstellen.
– Keith Thompson
5. Oktober 2011 um 0:38 Uhr
Die ausführbaren Dateien verschwinden? Wie werden sie automatisch gelöscht? Klingt nach einem Problem mit dem Virenscanner.
– Blechmann
7. Oktober 2011 um 12:40 Uhr
Victor T. : Mir wird nur die Berechtigung verweigert. tinman: Kein Virenschutz installiert, ich führe nur gelegentlich mcafee stinger aus. Ich schaue mir heute Abend mal UAC an.
– gzzzur
7. Oktober 2011 um 21:16 Uhr
Ihre Code::Blocks-Projekte sollten nicht in Verzeichnissen wie C , C://users//yourname oder C://ProgramFiles oder C://ProgramFiles/Code::Blocks erstellt werden.
– 2147483647
5. November 2012 um 2:36 Uhr
Ralf
Ich hatte genau das gleiche Problem direkt nach dem Abschalten einiger (meiner Meinung nach unnötiger) Windows-Dienste. Es stellte sich heraus, dass beim erneuten Einschalten der "Application Experience" alles funktionierte wieder einwandfrei.
Vielleicht müssen Sie diesen Dienst einfach aktivieren? So schalten Sie Application Experience ein:
Klicken Sie auf die Windows-Startschaltfläche.
Geben Sie in das Feld mit der Bezeichnung “Programme und Dateien durchsuchen” ein services.msc und klicken Sie auf die Schaltfläche Suchen. Es öffnet sich ein neues Fenster mit dem Titel “Services”.
Klicken Sie mit der rechten Maustaste auf die Zeile „Anwendungserfahrung“ und wählen Sie „Eigenschaften“ aus dem Popup-Menü.
Ändern Sie den Starttyp auf „Automatisch (verzögerter Start)“.
Starte den Computer neu.
Anwendungserfahrungen sollten das Problem in Zukunft verhindern.
Dies scheint die eigentlich gute Lösung für dieses wirklich unangenehme Problem zu sein. Ich habe es in einigen Forenthreads und dergleichen als ungelöst gesehen.
– Cimbali
15. November 2012 um 16:36 Uhr
Hat auch bei mir funktioniert, ich verstehe immer noch nicht, was los ist.
– 5Agado
3. April 2014 um 14:16 Uhr
Tolle Antwort kam nach Neustart auf +1 zurück
– Philipp Rego
25. September 2014 um 5:11 Uhr
Hat bei mir auch funktioniert, kann es mir nicht erklären.
– Robin Brügger
16. März 2015 um 16:45 Uhr
Ich versuche, ein Softwarepaket mit MSYS2/ming32 zu erstellen und stoße auf das gleiche Problem. Ich erhalte den ld-Fehler, wenn das configure-Skript versucht, ein Testprogramm zu kompilieren. Der Zauber „Application Experience“ hat nicht funktioniert.
– Seppo Enarvi
14. April 2015 um 17:31 Uhr
plodoc
Ihr Programm läuft noch. Sie müssen es beenden, indem Sie das Befehlszeilenfenster schließen. Wenn Sie Strg-Alt-Löschen, Task-Manager, Prozesse drücken (beenden Sie diejenigen, die mit Ihrem Dateinamen übereinstimmen).
Wenn Sie glauben, dass die ausführbare Datei von einem Prozess gesperrt ist, versuchen Sie es mit Process Explorer von SysInternals. Geben Sie in Datei/Handle Fibonacci.exe ein und Sie sollten sehen, wer die Datei besitzt.
Wenn dies nicht ausreicht, können Sie Process Monitor (wieder von SysInternals) verwenden, um die Aktivität aller Prozesse auf Ihrem System auf Fibonacci.exe zu verfolgen. Mit ein wenig Analyse (Aufruflisten) finden Sie vielleicht heraus, warum der Zugriff auf die Datei verweigert wird und was sie verschwinden lässt.
Ich habe Ihre Antwort ausgewählt, weil sie angesichts meiner Problemstellung die plausibelste Lösung zu sein scheint. Ausprobieren konnte ich es allerdings nicht, da der Rechner auf dem ich es laufen hatte abgestürzt ist. Da ich mich jetzt für Linux entschieden habe, macht es das für mich zu einem strittigen Punkt.
– gzzzur
25. Oktober 2011 um 13:50 Uhr
Arrun Josef
Problemursache:
Der Prozess des aktuellen Programms läuft weiterhin ohne Unterbrechung. (Dies ist der Grund, warum Sie dieses Problem nach einem Neustart nicht haben)
Die Lösung ist einfach:
Gehe zu cmd und geben Sie den Befehl ein taskkill -im Prozessname.exe -f
Z.B:
taskkill -im demo.exe -f
hier,
Demo – ist mein Programmname
Die beste Lösung ist, in der Eclipse-IDE zur Konsole zu gehen und auf die zu klicken roter Knopf um das Programm zu beenden. Sie werden sehen, dass Ihr Programm läuft und die Ausgabe dort zu sehen ist. 🙂 !!
Dies ist die beste Lösung , jeder , der Eclipse verwendet , sollte dies verwenden .
– Shadrack Mwangi
14. Dezember 2017 um 5:16 Uhr
Matt Fenwick
Ich hatte das gleiche Verhalten und habe es behoben, indem ich Code::Blocks als Administrator ausgeführt habe.
Dies ist die beste Lösung , jeder , der Eclipse verwendet , sollte dies verwenden .
– Shadrack Mwangi
14. Dezember 2017 um 5:16 Uhr
Khokhar
Öffnen Sie den Task-Manager -> Prozesse -> Klicken Sie auf .exe (Fibonacci.exe) -> Prozess beenden
wenn es nicht funktioniert
Schließen Sie die Eclipse-IDE (oder die von Ihnen verwendete IDE) und wiederholen Sie Schritt 1.
14136100cookie-checkld.exe: Ausgabedatei kann nicht geöffnet werden … : Zugriff verweigertyes
Hier ist eine Vermutung … wenn Sie in das Verzeichnis bin\Debug bauen, dann macht code::blocks möglicherweise etwas mit seinem integrierten Debugger und hält ein Datei-Handle auf der ausführbaren Datei offen. Versuchen Sie, es für die Veröffentlichung zu erstellen, und prüfen Sie, ob Sie dasselbe Problem haben
– Lappen
5. Oktober 2011 um 0:34 Uhr
Ich denke, @BrianGordons Vermutung ist gut. Wenn das Programm ausgeführt wird, beenden Sie es, bevor Sie versuchen, es neu zu erstellen.
– Keith Thompson
5. Oktober 2011 um 0:38 Uhr
Die ausführbaren Dateien verschwinden? Wie werden sie automatisch gelöscht? Klingt nach einem Problem mit dem Virenscanner.
– Blechmann
7. Oktober 2011 um 12:40 Uhr
Victor T. : Mir wird nur die Berechtigung verweigert. tinman: Kein Virenschutz installiert, ich führe nur gelegentlich mcafee stinger aus. Ich schaue mir heute Abend mal UAC an.
– gzzzur
7. Oktober 2011 um 21:16 Uhr
Ihre Code::Blocks-Projekte sollten nicht in Verzeichnissen wie C , C://users//yourname oder C://ProgramFiles oder C://ProgramFiles/Code::Blocks erstellt werden.
– 2147483647
5. November 2012 um 2:36 Uhr