GCC is a short of GNU Compiler Collection, a C compiler for Linux.
$ gcc [options] [source files] [object files] [-o output file]
GCC main options:
| option | description | 
|---|---|
| gcc -c | compile source files to object files without linking | 
| gcc -Dname[=value] | define a preprocessor macro | 
| gcc -fPIC | generate position independent code for shared libraries | 
| gcc -glevel | generate debug information to be used by GDB | 
| gcc -Idir | add include directory of header files | 
| gcc -llib | link with library file | 
| gcc -Ldir | look in directory for library files | 
| gcc -o output file | write build output to output file | 
| gcc -Olevel | optimize for code size and execution time | 
| gcc -shared | generate shared object file for shared library | 
| gcc -Uname | undefine a preprocessor macro | 
| gcc -w | disable all warning messages | 
| gcc -Wall | enable all warning messages | 
| gcc -Wextra | enable extra warning messages | 
Compile file1.c and file2.c and link to output file execfile:
$ gcc file1.c file2.c -o execfile
Run output file execfile:
$ ./execfile
Compile file1.c and file2.c without linking:
$ gcc -c file1.c file2.c
Compile myfile.c with debug information and link to output file execfile:
$ gcc -g myfile.c -o execfile
Compile myfile.c with warning messages enabled and link to output file execfile:
$ gcc -Wall myfile.c -o execfile
Compile myfile.c with and link with static library libmath.a located in /user/local/math to output file execfile:
$ gcc -static myfile.c -L/user/local/math -lmath -o execfile
Compile myfile.c with optimization and link to output file execfile:
$ gcc -O myfile.c -o execfile