I really feel little dizzy by the variety of compilers, always confuse them here or there. So this is
is the motivation to put them together, so I, hope you too, will never have that awful feeling anymore. In the cases of dealing with scientific applications, fortran and c/c++ are the ones we are dealing with the most.
1. GCC -- GNU Compiler Collection
GNU
Compiler
Collection (gcc) : C, C++, Objective-c, Fortran, Java, Ada and Go.
First how to pronounce GNU??? :
g'noo, sounds like
glue.
gcc is not a compiler that can only compile c++ code, which could be mislead by its name, instead it's an abbreviate name. It can compile lots of languages.
The standard compiler releases since 4.6 include front ends
for
C (gcc), ( sometimes, cc is an alias for gcc on your system. )
C++ (g++),
Objective-C,
Objective-C++,
Fortran (gfortran),
Java (gcj),
Ada (GNAT), and
Go (gccgo)
2. Intel compiler:
icc : C
icpc : C++
ifort : Fortran
idb :
debugger ( another debugger besides gdb I use.
)
3. IBM AIX compiler:
Introducing XL Fortran
IBM® XL Fortran for AIX®, V12.1 is
an advanced, high-performance compiler that can be used for developing complex,
computationally intensive programs, including interlanguage
calls with C and C++ programs.
Introducing XL C/C++
IBM® XL C/C++ for AIX®, V10.1 is
an advanced, high-performance compiler that can be used for developing complex,
computationally intensive programs, including interlanguage
calls with Fortran programs.
3.1 fortran code
To compile a source program, use one of the
xlf90,
xlf90_r,
xlf90_r7,
f90,
xlf95,
xlf95_r,
xlf95_r7,
f95,
xlf2003,
xlf2003_r,
f2003,
xlf,
xlf_r,
xlf_r7,
f77,
or
fort77 commands, which have the form:

.----------------------------------.
V |
>>-+-xlf90-----+----+--------------+----input_file---+---------><
+-xlf90_r---+ '-cmd_line_opt-'
+-xlf90_r7--+
+-f90-------+
+-xlf95-----+
+-xlf95_r---+
+-xlf95_r7--+
+-f95-------+
+-xlf2003---+
+-xlf2003_r-+
+-f2003-----+
+-xlf-------+
+-xlf_r-----+
+-xlf_r7----+
+-f77-------+
'-fort77----'
3.2 c / c++ code
| xlc |
Invokes the compiler for C source
files. This command supports all of the ISO C99 standard features,
and most IBM® language
extensions. This invocation is recommended for all applications. |
xlc_r, xlc128_r4, xlc128_r7, xlc128, xlc128_r, xlc128_r4, xlc128_r7 |
| c99 |
Invokes the compiler for C source
files. This command supports all ISO C99 language
features, but does not support IBM language extensions. Use this invocation for strict conformance to the C99 standard. |
c99_r, c99_r4, c99_r7, c99_128, c99_128_r, c99_128_r4, c99_128_r7 |
| c89 |
Invokes the compiler for C source
files. This command supports all ANSI C89 language
features, but does not support IBM language extensions. Use this invocation for strict conformance to the C89 standard. |
c89_r, c89_r4, c89_r7, c89_128, c89_128_r, c89_128_r4, c89_128_r7 |
| cc |
Invokes the compiler for C source
files. This command supports pre-ANSI C, and many common language extensions.
You can use this command to compile legacy code that does not conform to standard
C. |
cc_r, cc_r4, cc_r7, cc128, cc128_r, cc128_r4, cc128_r7 |
| gxlc |
Invokes the compiler for C source
files. This command accepts many common GNU C options, maps them to their
XL C option equivalents, and then invokes xlc.
For more information, refer to Reusing GNU C/C++ compiler options with gxlc and gxlc++. |
|
| xlc++, xlC |
Invokes the compiler for C++ source
files. If any of your source files are C++, you must use this invocation
to link with the correct runtime libraries. Files with .c suffixes, assuming
you have not used the -+ compiler option, are compiled as C language
source code. |
xlc++_r, xlc++_r4, xlc++_r7, xlc++128, xlc++128_r, xlc++128_r4,
xlc++128_r7, xlC_r, xlC_r4, xlC_r7, xlC128, xlC128_r, xlC128_r4, xlC128_r7 |
| xlc++core, xlCcore |
Invokes the compiler as described
above for xlc++ and xlC, but links only to the core of the runtime
library. Use this invocation if you want to link your application to a runtime
library other than that supplied with XL C++. |
xlc++core_r, xlc++core_r7,
xlc++core128, xlc++core128_r, xlc++core128_r7, xlCcore_r, xlCcore_r7, xlC128core,
xlC128core_r, xlC128core_r7 |
| gxlc++, gxlC |
Invokes the compiler for C++ files.
This command accepts many common GNU C/C++ options,
maps them to their XL C/C++ option
equivalents, and then invokes xlc++.
For more information, refer to Reusing GNU C/C++ compiler options with gxlc and gxlc++. |
|
4. PGI compiler:
-
PGFORTRAN™ native OpenMP, OpenACC and auto-parallel Fortran 2003 compiler with CUDA extensions
-
PGCC® OpenMP, OpenACC and auto-parallel ANSI and K&R C99 compiler
-
PGC++® OpenMP, OpenACC and auto-parallel GNU 4.8 g++ compatible C++ compiler with CUDA-x86 extensions
-
PGDBG® OpenMP and MPI parallel graphical debugger
-
PGPROF® OpenMP and MPI parallel graphical performance profiler