Types of output files

You can specify the following types of output files when invoking the XL C/C++ compiler:
Executable files
By default, executable files are named a.out. To name the executable file something else, use the -o file_name option with the invocation command. This option creates an executable file with the name you specify as file_name. The name you specify can be a relative or absolute path name for the executable file.

The format of the a.out file is described in the AIX® Files Reference.

Object files
If you specify the -c option, an output object file, file_name.o, is produced for each input file. The linker is not invoked, and the object files are placed in your current directory. All processing stops at the completion of the compilation. The compiler gives object files a .o suffix, for example, file_name.o, unless you specify the -o file_name option, giving a different suffix or no suffix at all.

You can link the object files later into a single executable file by invoking the compiler.

Shared library files
If you specify the -qmkshrobj option, the compiler generates a single shared library file for all input files. The compiler names the output file shr.o, unless you specify the -o file_name option, and give the file a .so suffix.
Assembler files
If you specify the -S option, an assembler file, file_name.s, is produced for each input file.

You can then assemble the assembler files into object files and link the object files by reinvoking the compiler.

Preprocessed source files
If you specify the -P option, a preprocessed source file, file_name.i, is produced for each input file.

You can then compile the preprocessed files into object files and link the object files by reinvoking the compiler.

Listing files
If you specify any of the listing-related options, such as -qlist or -qsource, a compiler listing file, file_name.lst, is produced for each input file. The listing file is placed in your current directory.
Target files
If you specify the -M or -qmakedep option, a target file suitable for inclusion in a makefile, file_name.u is produced for each input file.
Related information