The GNU Compiler Collection (GCC) is a free and open-source compiler system that supports many programming languages. It is the default compiler for many Linux distributions and is used by many developers around the world. GCC is a powerful tool that can be used to create high-performance software.
GCC has a wide variety of compilation options that can be used to control the compilation process.
Some of the most common options include:
-c: Compiles the source file to an object file without linking.
-Dname[=value]: Defines a preprocessor macro.
-fPIC: Generates position independent code for shared libraries.
-glevel: Generates debug information to be used by GDB.
-Olevel: Optimizes the generated code.
-Wall: Enables all warnings.
-Wextra: Enables additional warnings.
-pedantic: Enables pedantic warnings.
To compile the file myfile.c to an object file, use the following command:
gcc -c myfile.c
To define the preprocessor macro MY_MACRO with the value 1, use the following command:
gcc -DMY_MACRO=1 myfile.c
To generate position independent code for the shared library mylib.so,
use the following command:
gcc -fPIC -shared -o mylib.so myfile.c
To generate debug information for the program myprog, use the following command:
gcc -g -o myprog myfile.c
To optimize the generated code for speed, use the following command:
gcc -O3 -o myprog myfile.c
To enable all warnings, use the following command:
gcc -Wall -o myprog myfile.c To enable additional warnings, use the following command:
gcc -Wextra -o myprog myfile.c
To enable pedantic warnings, use the following command:
gcc -pedantic -o myprog myfile.c

a list of GCC preprocessing, compilation, assembly, and linking commands with examples:
Preprocessing gcc -E file.c – Compiles the file file.c to a preprocessed file called file.i.
Compilation gcc -c file.c – Compiles the file file.c to an object file called file.o.
Assembly gcc -S file.c – Compiles the file file.c to an assembly file called file.s.
Linking gcc -o myprog file.o – Links the object file file.o with the standard C library and creates an executable file called myprog.
gcc -o myprog file.o -lm – Links the object file file.o with the math library and creates an executable file called myprog.
gcc -o myprog file.o -lmylib – Links the object file file.o with the libmylib.so shared library and creates an executable file called myprog.
gcc -o myprog file.o -L/path/to/libmylib -lmylib – Links the object file file.o with the libmylib.a static library and creates an executable file called myprog.
an example of how to use these commands to compile a C program:
Code snippet Sample code:
#include <stdio.h>
int main()
{
printf(“Hello, world!\n”);
return 0;
}
To compile this program, you would use the following command: gcc -o hello hello.c
This will compile the file hello.c to an object file called hello.o
and then link the object file with the standard C library to create an executable file called hello.
You can then run the program by typing the following command: ./hello
This will print the following output to the console: Hello, world!
