Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

g++ in cygwin doesn't create .exe file

Tags:

g++

cygwin

I just installed cygwin on a new Windows box running Windows 7 and I am getting funny behavior when I compile a c++ program. Here's what I type:

g++ test.gpp -o test

On my other Windows boxes, this creates an exe file, test.exe, and it is, of course an executable. But on this installation, the file test is created. To my surprise, it is not an executable, but rather looks like a debug file (in ascii printables). If I instead type:

g++ test.gpp -o test.exe

Then I do get the executable test.exe. (1) why in all my other implementations do I get the executable, but not with this most recent attempt? (2) Why do I care? Well, I also work on linux boxes and am not accustomed to typing the extension ".exe". (I hate that aspect of non-linux files!) I am guessing that there is some sort of one-time flag I can set to make the default file that g++ creates be a .exe file.

The problem with this problem is that none of you may be able to reproduce it! (I can't on my other machines!)

like image 840
BDD Avatar asked Jan 26 '26 16:01

BDD


1 Answers

As far as I can tell, g++ doesn't recognize the .gpp extension. Rename the file from test.gpp to test.cpp and try again.

On my Cygwin system, g++ test.gpp gives me an error message:

... file format not recognized; treating as linker script ...

Cygwin compilers do create executable files with a .exe extension (because Windows requires it), but it also lets you refer to such files without the suffix. So, for example:

ls -l test.exe

and

ls -l test

should both show you the same file. (If you happen to have files with both names, things can get a bit confusing -- so don't do that.) g++'s -s option also treats the .exe suffix specially, so -o test and -o test.exe should do the same thing.

I don't know why you're seeing the behavior you describe. Perhaps you happen to have something in test.gpp that looks like a valid linker script?

like image 70
Keith Thompson Avatar answered Jan 29 '26 13:01

Keith Thompson