web-dev-qa-db-fra.com

ld.exe: impossible d'ouvrir le fichier de sortie ...: permission refusée

J'ai récemment installé CodeBlocks avec mingw32 sur Windows 7 Ultimate 32 bits afin de dépoussiérer mes compétences c, mais ce problème m’a quelque peu embrouillé.

J'ai décidé de déclencher un court générateur de Fibonacci pour m'assurer que ma configuration fonctionnait bien, mais je me suis heurté à un obstacle.

Le programme compile, lie et ainsi de suite comme un charme et je reçois un exécutable correspondant qui fonctionne comme prévu.

Les problèmes se produisent si j'essaye de compiler à nouveau, puis j'obtiens le suivant:

c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.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:

  • Le fichier exécutable n'est pas en cours d'exécution.
  • Le chemin d'accès à l'exécutable est accessible en lecture/écriture sur mingw32 (sinon, il ne pourrait pas être construit à la première place)
  • Je ne fais pas fonctionner cygwin sous quelque forme que ce soit.

Et maintenant, passons au drole: Habituellement, après quelques minutes, tous les exécutables générés par mingw32 qui affichent ce comportement Accès refusé disparaîtront automatiquement sans aucune intervention de ma part.

J'ai un peu cherché cela dans Google, mais la plupart des autres résultats étaient soit vagues, soit inapplicables.

Je me demande s’il existe des paramètres de sécurité Windows 7 qui font des dégâts avec mes .exe, mais je ne connais pas très bien Windows 7 pour savoir par où commencer la recherche.

Quelqu'un a des idées?

45
gzzzur

J'ai eu exactement le même problème juste après la désactivation de certains services Windows (à mon avis inutile). Il s’est avéré que lorsque j’ai rallumé le "Application Experience" tout a recommencé à fonctionner correctement.

Peut-être que vous devez simplement activer ce service? Pour activer l'expérience d'application:

  1. Cliquez sur le bouton Démarrer Windows.

  2. Dans la zone intitulée "Rechercher les programmes et les fichiers", tapez services.msc et cliquez sur le bouton de recherche. Une nouvelle fenêtre intitulée "Services" s'ouvre.

  3. Faites un clic droit sur la ligne "Application Experience" et sélectionnez "Propriétés" dans le menu contextuel.

  4. Définissez le type de démarrage sur "Automatique (démarrage différé)".

  5. Redémarrer l'ordinateur.

Les expériences d’application devraient prévenir ce problème à l’avenir.

35
Ralf

Si vous pensez que le fichier exécutable est verrouillé par un processus, essayez Process Explorer de SysInternals. Dans le fichier/handle, entrez Fibonacci.exe et vous devriez voir qui détient le fichier.

Si cela ne suffit pas, vous pouvez utiliser Process Monitor (à nouveau depuis SysInternals) pour suivre l'activité de tous les processus de votre système sur Fibonacci.exe. Avec un peu d’analyse (piles d’appels), vous découvrirez pourquoi l’accès au fichier est refusé et ce qui le fait disparaître.

20
Thierry Franzetti

Votre programme est toujours en cours d'exécution. Vous devez le tuer en fermant la fenêtre de ligne de commande. Si vous appuyez sur les touches control alt delete, gestionnaire de tâches, processus (éliminez celles qui correspondent à votre nom de fichier).

13
plodoc

La meilleure solution consiste à accéder à la console dans Eclipse IDE et à cliquer sur le bouton bouton rouge pour terminer le programme. Vous verrez que votre programme est en cours d'exécution et que la sortie est visible ici. :) !!

7
Black_Rider

J'ai eu le même comportement, et corrigé en exécutant Code :: Blocks en tant qu'administrateur.

3
Luis
  1. Ouvrez le gestionnaire de tâches -> Processus -> Cliquez sur .exe (Fibonacci.exe) -> Terminer le processus

    si ça ne marche pas

  2. Fermez Eclipse IDE (ou quoi que ce soit IDE que vous utilisez)) et répétez l'étape 1.

3
Khokhar

J'avais un problème similaire. À l'aide d'un utilitaire gratuit appelé Unlocker (version 1.9.2), j'ai constaté que mon logiciel antivirus (Panda free) laissait un verrou en suspens sur le fichier exécutable même s'il ne détectait aucune menace. Unlocker a pu le déverrouiller.

2
R. Strickland

Ce peut être votre logiciel antivirus.

Dans mon cas, Malwarebytes tenait un handle sur l'exécutable de mon programme:

enter image description here

Utiliser Process Explorer pour fermer la poignée, ou simplement désactiver l’antivirus pour un peu, fonctionne très bien.

1
Herobrine2Nether

Cause du problème: Le processus du programme en cours est toujours en cours d'exécution sans interruption. (C’est la raison pour laquelle vous n’avez pas eu ce problème après un redémarrage)

Le correctif est simple: Allez à cmd et tapez la commande taskkill -im nom-processus.exe -f

Ex:

 taskkill -im demo.exe -f

ici,

démo - est mon nom de programme

1
Arun Joshla

Vous avez le même problème. Lire ceci . Désactivation du logiciel antivirus (mcaffee). Et voilà

Confirmé par le journal antivirus:

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

1
Hey StackExchange

j'ai connu un problème similaire. Bitdefender a automatiquement mis en quarantaine chaque fichier exi créé par MinGW g ++. Au lieu du fichier exe complet, j'ai trouvé un fichier avec une extension bizarre 'qzquar' testAutoPtr1.exe.48352.gzquar

Quand j'ai ouvert des éléments en quarantaine dans Bitdefender, j'ai trouvé mon fichier exe en quarantaine.

0
Shevach Riabtsev

J'ai eu cette erreur en utilisant l'éditeur Atom et mingw (via un paquet nommé gpp-compiler) pour C++. Fermer la fenêtre de la console ouverte a résolu mon problème.

0
Pro Q