Mike Badar wrote: (Beaten to it, but there's some other stuff here too.) > I compiled my program (without error) with the following command: > > g++ first.cpp > > It produced a file called a.out. Is this the object file? > How do I convert this file into an executable file? This is the final executable. (It's a historical name - "assembler out".) You can run it with ./a.out Note the leading "./" is important - it will be necessary unless you have '.' in your PATH environment. If you want to change the name generated, add -o <output file name> to your command line. > Is linking the process used to create an executable from an object > file? Yes. Note that g++ is actually the "compiler driver"; what really happens is * you invoke g++ * g++ invokes cc1plus to compile the code * cc1plus generates a temporary assembler file * cc1plus invokes as to assemble to an object file * g++ invokes ld (or collect2) to link the object file into an executable, using a predefined set of libraries. If you want to see all of this in action, add '-v' to your compile line. If you want to compile your C++ into assembler and not assemble or link, add '-S' to your compile line. If you want to compile your C++ into an object file, add '-c' to your command line. If you want to link C++ object file(s) and libraries, it's better feed them into g++ rather than trying to use ld yourself. Note that you almost certainly want to add '-Wall' to your compile line to get compiler warnings, and you want at least one of '-g' to add debugging information to your build or '-O2' to optimize the code; g++ defaults to no optimization. You can get help on the flags g++ supports with g++ --help or looking in the manual; there's a copy at http://gcc.gnu.org/onlinedocs/ Good luck, Rup.