views:

976

answers:

3

Hello,

I'm using Linux Ubuntu Intrepid Ibex and compiling C++ files with GCC, but when i compile, gcc makes a *.out file, that is the executable, but how i can make Linux executables? Thanks!

+3  A: 

That is the executable. If you don't like a.out, you can pass an -o flag to the compiler. If the executable isn't marked with an executable bit, you need to do so youself:

chmod u+x ./a.out
./a.out

HTH.

EightyEight
The *.out file already is an executable, but how i can build a native Linux executable, linux native executables don't have extensions.
Nathan Campos
In linux, extensions don't matter. You can just rename the file to anything you like.
notnoop
When the problem is permition i know. Thanks!
Nathan Campos
+4  A: 

To create a executable called myprog you can call gcc like this:

gcc -c -o myprog something.c

You could also just rename the *.out file gcc generates to the desired name.

sth
+8  A: 

That executable is a "Linux executable" - that is, it's executable on any recent Linux system. You can rename the file to what you want using

rename a.out your-executable-name

or better yet, tell GCC where to put its output file using

gcc -o your-executable-name your-source-file.c

Keep in mind that before Linux systems will let you run the file, you may need to set its "executable bit":

chmod +x your-executable-name

Also remember that on Linux, the extension of the file has very little to do with what it actually is - your executable can be named something, something.out, or even something.exe, and as long as it's produced by GCC and you do chmod +x on the file, you can run it as a Linux executable.

Tim
Thanks very much!!!!!
Nathan Campos
Doesn't gcc (in fact the linker it calls) already set the executable bit in its output file?
CesarB
@CesarB: Yes, the gcc call makes 'your-executable-name' executable by default.
quark
@CesarB: thanks for clarifying!
Tim