ld.exe: impossible d'ouvrir le fichier de sortie...: Permission refusée
j'ai récemment installé CodeBlocks avec mingw32 sur Windows 7 Ultimate 32bit afin de dépoussiérer mes compétences en c, mais ce problème m'a quelque peu déconcerté.
j'ai décidé de mettre le feu à un petit générateur de Fibonacci pour m'assurer que mon installation fonctionnait, mais je me suis heurté à un obstacle.
le programme compile, les liens et tout ça comme un charme et j'obtiens un exécutable correspondant qui tourne comme prévu.
Les problèmes se produisent si j'essaie de compiler à nouveau, alors j'obtiens le suivantes:
c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file binDebugFibonacci.exe: Permission denied
Je ne peux même pas éditer les permissions de l'exécutable généré.
j'ai vérifié les suspects habituels:
- Exécutable est en vérité pas en cours d'exécution.
- Chemin d'accès à l'exécutable est en lecture/écriture pour mingw32 (sinon il ne serait pas en mesure de construire dans la première place)
- Je ne dirige pas cygwin sous quelque forme que ce soit.
et maintenant pour le plus drôle: habituellement après quelques minutes, tous les exécutables généré par mingw32 qui affichent ce comportement de refus d'accès disparaîtra automatiquement sans aucune intervention de ma part.
j'ai quelque peu cherché sur Google, mais la plupart des autres résultats étaient vagues ou inapplicables.
je me demande si il existe une certaine sécurité de Windows 7 réglage de jouer des ravages avec mon .exe, mais je ne sais pas trop où commencer les recherches.
quelqu'un a des idées?
11 réponses
j'ai eu exactement le même problème juste après avoir éteint certains (à mon avis unneccessary) Services Windows. Il s'est avéré que lorsque j'ai rallumé le "Application Experience"
tout a repris son bon fonctionnement.
cliquez sur le bouton Démarrer de Windows.
dans la case "Rechercher des programmes et des fichiers" tapez
services.msc
et cliquez sur le bouton de recherche. Une nouvelle fenêtre avec le titre "Services" s'ouvre.cliquez avec le bouton droit de la souris sur la ligne "Application Experience" et sélectionnez "Properties" dans le menu contextuel.
changer le type de démarrage en " Automatic (delayed start)".
redémarrez l'ordinateur.
les expériences D'Application devraient prévenir le problème à l'avenir.
si vous pensez que l'exécutable est verrouillé par un processus, essayez L'Explorateur de processus de SysInternals. Dans le fichier/handle, entrez Fibonacci.exe et vous devriez voir qui contient le fichier.
si ce n'est pas suffisant, vous pouvez utiliser Process Monitor (de SysInternals, encore une fois) pour suivre l'activité de tous les processus sur votre système sur Fibonacci.EXE. Avec un peu d'analyse (les piles d'appels), vous aurez peut découvrir pourquoi l'accès au fichier est refusé et que le faire disparaître.
votre programme fonctionne toujours. Vous devez le tuer en fermant la fenêtre de ligne de commande. Si vous appuyez sur control Alt delete, task manager, process (tuez ceux qui correspondent à votre nom de fichier).
la meilleure solution est d'aller sur la console dans eclipse IDE et de cliquer sur le bouton rouge mettre fin au programme. Vous verrez que votre programme est en cours d'exécution et la sortie peut être vue là. :)!!
Ouvrir le gestionnaire des tâches -> Processus -> Cliquez sur .exe (Fibonacci.exe) - > fin du processus
si ça ne fonctionne pas
fermez L'IDE eclipse (ou n'importe quel IDE que vous utilisez) et répétez l'étape 1.
j'ai eu le même comportement, et je l'ai corrigé en lançant Code::Blocks comme administrateur.
j'ai eu un problème similaire. En utilisant un utilitaire freeware appelé Unlocker (version 1.9.2), j'ai découvert que mon logiciel antivirus (Panda free) avait laissé un verrou sur le fichier exécutable même s'il ne détectait aucune menace. Unlocker a pu le déverrouiller.
Eu le même problème. Lire . Désactivé le logiciel antivirus (mcaffee). Et voila
Confirmé par l'antivirus log:
Blocked by Access Protection rule d:\mingw64\x86_64-w64-mingw32\bin\ld.exe d:\workspace\cpp\bar\foo.exe User-defined Rules:ctx3 Action blocked : Create
il se peut que ce soit votre logiciel Antivirus.
dans mon cas Malwarebytes tenait une poignée sur l'exécutable de mon programme:
utiliser L'Explorateur de processus pour fermer la poignée, ou juste désactiver l'antivirus pour un peu de travail très bien.
j'ai eu cette erreur en utilisant L'éditeur Atom et mingw (à travers un paquet appelé gpp-compiler
) pour C++. Fermer la fenêtre de la console ouverte a corrigé mon problème.
Cause Du Problème: Le processus du programme actuel est toujours en cours sans interuption. (C'est la raison pourquoi vous n'avez pas eu ce problème après un redémarrage)
La solution est simple : Accédez à cmd et tapez la commande taskkill -im processus-nom.exe-f
par exemple:
taskkill -im demo.exe -f
ici
démo est mon nom de programme