User forums > Help

.c single file compiles only once. any change and subsequent recompilation fails

(1/3) > >>

tkogias:
Hello all,

Please bear with me - I am facing a really weird issue. I will try to be as exact as possible.

TL;DR - Compilation is successful only once, then every subsequent attempt (with any minor code change) fails with error (see below). Can only recompile if I manually go and delete .exe file (can do it as simple user, no need for elevated cmd). Running codeblocks as admin has same result. Antivirus is disabled. Fresh install CodeBlocks 20.03, MINGW64 bundle.

---

I am using a fresh install of CodeBlocks 20.03 (installed with the bundled MinGW64 compiler). OS is Windows 10 - 64bit.

I have been using Codeblocks without problem for 4-5 years now (version 17.12 - I just uninstalled and installed 20.03 trying to fix my proboem, but as I expected, it didn't work).

Suddenly, today, whenever I create a new file (just a simple File -> New -> Empty file), save it as test.c for example, write a simple hello world c program - when I compile it (or compile/run) everything works fine.

However, when I make any change to the code, for example change the printout to "hello world2", when trying to recompile I get:

||=== Build file: "no target" in "no project" (compiler: unknown) ===|
ld.exe||cannot open output file C:\tmp\test.exe Invalid argument|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Settings -> Compiler -> ToolChain Executables shows correct path.

I googled around extensively for a solution ..

- I have my antivirus disabled, this cannot be an issue.
- I also searched for processes, both with task manager, and various powershell commands/applets that list all processes, sorted by datetime etc, could not really identify a process that 'stays alive' and causing problems as some people seem to suggest.
- I also stumbled accross a similar issue, described here, that talks about enabling an 'application experience' service in windows that could cause issues - no luck there, service is enabled in my system (as it should be)

Now, I finally found kind of a 'solution', or actually more a sign of what the problem is. If I manually go to a command prompt (not even an elevated one) and delete created .exe file, for example test.exe in the example above, then codeblocks can successfully compile (and run) the updated code, again only once though. Recompiling after a change gives the same error, and I have to manually delete new .exe file etc...

I have cleared my PATH environment because I had another version of GCC sitting there and thought this might (somehow?) create an issue..

I have tried to run Codeblocks as administrator just in case .. Exact same thing happens ..

The strange thing is that all this just happened 'randomly' - I mean I didn't change anything in windows or codeblocks .. It just happened today. Could it be a Windows update that messed something up?

Only thing I tried to do that might be relevant (although I cant understand how) is that I tried to setup VS Code to compile/run C programs - it did so successfully, but shows same behaviour - compiles and runs only once, then I have to go and manually delete .exe file in order for it to run again, and in VS code's case, I need an elevated prompt to delete the .exe .. I couldn't bother with that, and turned back to CodeBlocks (which I actually like to be honest) only to find this weird error here too.

Although it seems the vs code setup messed up things, I suspect it might be a coincidence, since I hadn't run CodeBlocks in some time, perhaps a windows update messed up something and I just had not been aware of it .. Maybe I 'm wrong and vs code did mess something up in my system..


Any help would be GREATLY appreciated .. I 've been fighting with this for4-5 hours now and really don't know what to do .. Unfortunately I don't have windows restore points, I would have tried that too.

Again pointing out that uninstall and fresh install of CodeBlocks 20.03 did nothing - it seems to be a weird OS issue? Codeblocks doesn't have the right to overwrite the .exe file created?


I would really appreciate any help and of course I m looking forward to any suggestions in order to try anything ..


thanks - sorry for the length of this message..


PS - I should point out that even successful compilation, still prints:

||=== Build file: "no target" in "no project" (compiler: unknown) ===|
||=== Build finished: 0 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

So I guess the 'compiler:unknown' is a "standard" message, although a bit weird - but that's not the problem.. Again I verify that settings->compiler->toolchain executables shows right path (and program compiles and runs (i see output) on first time OK, as well as every time I go and delete the .exe file...



I 'll add one more detail I just noticed, although this is way too big already..

If I only compile - then everything works fine. I mean, I can make changes to the code, and simply compile, everything is successful (no errors) and I see updated timestamps on .o object file, .exe and of course .c file. Problem starts happening as soon as I click 'run' even once on codeblocks - first time the program runs, terminal opens, I see output, but then every subsequent attempt to even simply compile (without even any changes) results in the aforementioned error.

Miguel Gimenez:
Have you checked if your program finishes? Open task manager and check if console runner or your program are still alive.

tkogias:

--- Quote from: Miguel Gimenez on March 13, 2024, 11:34:29 am ---Have you checked if your program finishes? Open task manager and check if console runner or your program are still alive.

--- End quote ---

Hello, and thanks for your input.

Yes, it does finish. When I run it the first time, I do see cb_console_runner.exe in tasks, when i close the window (click x on console window showing output), it disappears from task manager. I have also checked through PowerShell, sorting all processes by time - again same behaviour, I see the processes and I stop seeing them when I close the window. The program seems to finish, like it always did when I simply closed the terminal window that opens up. Also, codeblocks compile/run/compile&run buttons are disabled when terminal window is still open.

However, upon closing window, codeblocks re-enables buttons, and although I don't see the process anymore in Windows, compile&run shows the error I pointed out in my first post. I have to go and manually delete .exe file in order to be able to compile&run again.

Miguel Gimenez:
Have you tried pressing a key to close the console?

The "No project/No target/Unknown compiler" message has no sense, and

--- Code: ---ld.exe||cannot open output file C:\tmp\test.exe Invalid argument|
--- End code ---
means something is corrupted.

Go to Settings->Compiler->Other settings and select "Full command line" in Compiler logging. Then do a full rebuild and post the result here in code tags (the # above the edit window).

tkogias:
Thanks for your help. I am trying to provide what you requested.

I checked compiler -> settings -> other settings, compiler logging was already in 'full command line'.

I create a new file, test3.c. It contains a simple printout.

I compile the .c file first (simple compile, not build and run). In codeblocks build log i get:



--- Code: ----------------- Build file: "no target" in "no project" (compiler: unknown)---------------

gcc.exe   -c C:\Users\thomas\test3.c -o C:\Users\thomas\test3.o
gcc.exe  -o C:\Users\thomas\test3.exe C:\Users\thomas\test3.o   
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
--- End code ---


Then I do build & run. Program executes succcessfully, a terminal window opens and I see the results of the printf.

Build log in codeblocks shows:



--- Code: ----------------- Build file: "no target" in "no project" (compiler: unknown)---------------

gcc.exe   -c C:\Users\thomas\test3.c -o C:\Users\thomas\test3.o
gcc.exe  -o C:\Users\thomas\test3.exe C:\Users\thomas\test3.o   
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
 
Checking for existence: C:\Users\thomas\test3.exe
Executing: '"C:\CodeBlocks/cb_console_runner.exe" "C:\Users\thomas\test3.exe"' (in 'C:\Users\thomas')
Set variable: PATH=C:\CodeBlocks\MinGW\bin;C:\CodeBlocks\MinGW;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\PuTTY;C:\Program Files (x86)\Calibre2;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\MinGW64\bin;C:\Program Files\dotnet;C:\Program Files\nodejs;C:\Program Files (x86)\dotnet;C:\Program Files\GitHub CLI;C:\Program Files\Git\cmd;C:\Users\thomas\AppData\Local\Programs\Python\Python311\Scripts;C:\Users\thomas\AppData\Local\Programs\Python\Python311;C:\Users\thomas\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Java\jdk1.8.0_191\bin;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.3.2\bin;\;C:\Users\thomas\AppData\Local\Android\Sdk\platform-tools;C:\Users\thomas\AppData\Roaming\npm;C:\Program Files (x86)\Nmap;c:\Users\thomas\aliases
--- End code ---

This is the terminal window:


--- Code: ---1111
Process returned 0 (0x0)   execution time : 1.822 s
Press any key to continue.
--- End code ---

 (the only code inside the test3.c file is a
--- Code: ---printf("1111");
--- End code ---


I close terminal window.

If I do another Build&Run (without changing anything in the code), I get the error. Build log shows:



--- Code: ----------------- Build file: "no target" in "no project" (compiler: unknown)---------------

gcc.exe   -c C:\Users\thomas\test3.c -o C:\Users\thomas\test3.o
gcc.exe  -o C:\Users\thomas\test3.exe C:\Users\thomas\test3.o   
C:/CodeBlocks/MinGW/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file C:\Users\thomas\test3.exe: Invalid argument
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
--- End code ---



Could it be that PATH shows two different entries for MINGW compiler, one ending at the /bin directory and one in the parent directory, or is that completely irrelevant?


Navigation

[0] Message Index

[#] Next page

Go to full version