Popular IDE's and C Compilers

List of freeware IDE's:

Notepad++ (Windows)

gEdit (Linux)

Eclipse (Linux and Windows)

Code::Blocks (Linux and Windows)

Qt Creator (Linux and Windows)

Visual Studio Community (Windows)

MinGW Developer Studio (Windows)

And many more...

List of free Compilers:

GCC (The best C compiler)

GCC = GNU C Compiler

Also known as GNU Compiler Collection

GCC is installed automatically in Linux.

GCC can be installed in Windows and run using mingw.

Introduction to GCC

To compile a program:

gcc program.c

Result: a.exe (Windows) or a.out (Linux)

Compiling a program with a different executable name:

gcc program.c -o program

Result: program.exe (Windows) or program.out (Linux)

Generate all warnings (Suspicious code):

gcc -Wall program.c

Turn on Optimizations:

gcc -O program.c

Compile a C-program that uses the math library:

gcc program.c -lm

Program with symbolic information for the debugger:

gcc -g program.c

Project (two files) compilation

How to compile a system consisting of several program files. One of them must have main() function

mainprog.c and funclib.c will be used together

Compiling to object files

gcc -c mainprog.c funclib.c

After that, linking all the object files together in one executable:

gcc mainprog.o funclib.o -o myprog

The Result is an executable file with the name myprog

Support file extensions

.c - C language files

.i - preprocessed C source code

.s - assembly language source code

.o - compiled object code

.a - statically linked compiled library code

.so - shared Object code

Header files and library directories

for MinGW:





For Linux:



GCC options

Set name for executable file

-o outputexecutable

Compile and assemble (object file creation)


Compile only and prepare Assembly code without assembling


Preprocess only, create .i file


All gcc options print


get current version of gcc


print all warnings


Optimization (n= 0, 1, 2, 3)


Compile with information for gdb


Add include directory

-I dir

Add library directory

-L dir



Set standard c89


Link using static libraries


Using Assembler as:

In development...

Using the Debugger gdb

In development...

Using lint

In development...