ld.exe: cannot open output file ... : Permission denied
Asked Answered
B

12

61

I recently installed CodeBlocks with mingw32 on Windows 7 Ultimate 32bit in order to dust off my c skills, but this problem has me somewhat stumped.

I decided to fire off a short Fibonacci generator to make sure my setup was working, but I ran into a hurdle.

The program compiles, links and whatnot like a charm and I get a corresponding executable which runs as expected.

The problems occur if I try to compile again, then I get the following:

c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied

I can't even edit the permissions of the generated executable.

I've checked the usual suspects:

  • Executable is verily not running.
  • Path to executable is read/writable to mingw32 (otherwise it wouldn't be able to build in the first place)
  • I'm not running cygwin in any shape or form.

And now for the funny bit: Usually after a few minutes, any executables generated by mingw32 which are displaying this Access Denied behaviour will automatically vanish without any intervention from me.

I've googled this somewhat, but most of the other results were either vague or inapplicable.

I wonder whether there is some Windows 7 security setting playing havoc with my .exe's, but I'm not that knowledgeable about Win 7 as to know where to begin searching.

Any one have any ideas?

Bolshevik answered 5/10, 2011 at 0:20 Comment(9)
Here's a total guess... if you're building to the bin\Debug directory then code::blocks may be doing something with its integrated debugger, keeping a file handle open on the executable. Try building it for release and see if you have the same problemEricson
I think @BrianGordon's guess is a good one. If the program is running, kill it before trying to rebuild.Lenticularis
It behaves the same in Debug and Release and also if I run gcc from cmd. On a side note, it seems only to happen AFTER I actually run the executable. I'm starting to think it's definately a security settings thing.Retorsion
After you run the executable? Is it still running? Does the program terminate by itself, or did you add something like a call to getch()? The linker can't write a new executable file if it's still being used.Lenticularis
No, if it's running, I can't find it anywhere in the Task Manager. It's not a terribly complicated program: pastebin.com/jYKs71uSRetorsion
@gzzzur if you open explorer to the directory of the executable can you delete it when you get the permission denied error or does it issue an error that the file is still in use?Armenia
The executables vanish? As in they get deleted automatically? Sounds like a virus scanner issue.Mccollum
Victor T. : I just get Permission denied tinman: No anti-virus installed, I just run mcafee stinger occasionally. I'm going to have a look at UAC tonight.Retorsion
Your Code::Blocks Projects should not be created in directories like C , C://users//yourname or C://ProgramFiles or C://ProgramFiles/Code::Blocks.Gamekeeper
H
48

I had exactly the same problem right after switching off some (in my opinion unneccessary) Windows services. It turned out that when I switched ON again the "Application Experience" everything resumed working fine.

May be you simply have to turn on this service? To switch ON Application Experience:

  1. Click the Windows start buttonn.

  2. In the box labeled "Search programs and files" type services.msc and click the search button. A new window with title "Services" opens.

  3. Right click on "Application Experience" line and select "Properties" from popup menu.

  4. Change Startup type to "Automatic (delayed start)".

  5. Restart computer.

Application Experiences should prevent the problem in the future.

Hutchins answered 26/10, 2011 at 14:51 Comment(10)
This seems to be the actually good solution to this really nasty problem. I've seen it unsolved on some forum threads and the like.Slug
Worked also for me, still I don't understand what's going on.Colis
Great answer came back after restart to +1Asclepiadaceous
Worked for me as well, cannot explain it.Foamflower
I'm trying to build a software package with MSYS2/ming32 and encounter the same problem. I get the ld error when the configure script is trying to compile a test program. The "Application Experience" magic didn't work.Giuseppe
Worked even before restart on windows 7. Dont know why but it worked (;Venireman
In Windows 10, Application Experience can be found by:1. Go to the search in start menu and type task scheduler and select it from the list of results. 2. In there, please select the Task scheduler library in the left pane. 3. There select Microsoft. 4. In Microsoft, please select Windows. 5. In the Windows, please select the Application Experience. (From this form)Dannielledannon
For me, Cortana = search. However, once I get to that screen I'm not sure what to do to restart "Application Experience".Dannielledannon
Worked for me, it wasnt the antivir/git, Windows is just the worst!It
In windows 11 this option is called "Application Management", still works the same and can be manually started to avoid rebooting.Elidiaelie
A
29

Your program is still running. You have to kill it by closing the command line window. If you press control alt delete, task manager, process`s (kill the ones that match your filename).

Asp answered 12/10, 2011 at 15:57 Comment(0)
L
23

If you think the executable is locked by a process, try Process Explorer from SysInternals. In the File/handle, enter Fibonacci.exe and you should see who holds the file.

If it is not enough, you can use Process Monitor (from SysInternals, again) to follow the activity of all processes on your system on Fibonacci.exe. With a little bit of analysis (call stacks), you'll may find out why the access to the file is denied and what make it disappear.

Laverty answered 10/10, 2011 at 20:9 Comment(1)
I picked your answer because it looks like the most plausible solution given my problem statement. I wasn't able to try it out though, since the machine I had it running on crashed. Since I've now decided to go with linux it kind of makes this a moot point for me.Retorsion
B
10

Problem Cause : The process of the current program is still running without interuption. (This is the reason why you haven't got this issue after a restart)

The fix is simple : Go to cmd and type the command taskkill -im process_name.exe -f

Eg:

 taskkill -im demo.exe -f

here,

demo - is my program name

Blat answered 23/6, 2018 at 10:21 Comment(0)
D
7

The Best solution is go to console in eclipse IDE and click the red button to terminate the program. You will see the your program is running and output can be seen there. :) !!

Dorfman answered 14/1, 2013 at 16:10 Comment(1)
This is the best solution , everyone using eclipse should use this .Sidekick
A
4

I had the same behaviour, and fixed it by running Code::Blocks as administrator.

Allowedly answered 27/2, 2012 at 16:16 Comment(0)
S
3
  1. Open task manager -> Processes -> Click on .exe (Fibonacci.exe) -> End Process

    if it doesn't work

  2. Close eclipse IDE (or whatever IDE you use) and repeat step 1.

Satinet answered 25/4, 2014 at 10:17 Comment(0)
R
2

I had a similar problem. Using a freeware utility called Unlocker (version 1.9.2), I found that my antivirus software (Panda free) had left a hanging lock on the executable file even though it didn't detect any threat. Unlocker was able to unlock it.

Restrained answered 12/9, 2014 at 15:31 Comment(1)
Thanks, I was able to fix the same problem by turning off File System Auto-Protect from Symantec Endpoint Protection.Giuseppe
C
2

Got the same issue. Read this. Disabled the antivirus software (mcaffee). Et voila

Confirmed by the 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

Crossquestion answered 15/10, 2015 at 20:7 Comment(0)
F
2

It may be your Antivirus Software.

In my case Malwarebytes was holding a handle on my program's executable:

enter image description here

Using Process Explorer to close the handle, or just disabling antivirus for a bit work just fine.

Furrow answered 7/7, 2017 at 20:57 Comment(1)
[SOLVED]In my case it was the anti-virus that was blocking it. I opened the antivirus program and it had logged an event that ld.exe was blocked. If you just add the exception to ld.exe, this error goes away, no need to disable Antivirus.Threescore
L
1

i experienced a similar issue. Bitdefender automatically quarantined each exe-file i created by MinGW g++. Instead of the full exe-file i found a file with a weird extension 'qzquar' testAutoPtr1.exe.48352.gzquar

When i opened quarantined items in Bitdefender i found my exe-file quarantined there.

Lockyer answered 19/1, 2019 at 15:7 Comment(0)
D
0

I got this error when using the Atom editor and mingw (through a package called gpp-compiler) for C++. Closing the open console window fixed my issue.

Dannielledannon answered 30/5, 2018 at 12:41 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.