0% found this document useful (0 votes)
14 views

Lecture - 07 - Introduction To Analyze A C Program

Uploaded by

Hien Le
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Lecture - 07 - Introduction To Analyze A C Program

Uploaded by

Hien Le
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Lecture 1d

Analyzing a c program
by Quan LE-TRUNG, Dr.techn.
Compile/Link a Simple C
Program - hello.c

Below is the Hello-world C


program hello.c:

// hello.c
#include <stdio.h>

int main() {
printf("Hello, world!\n");
return 0;
}
2
GCC Compilation Process

3
GCC compiles a C/C++ program into executable in 4 steps as shown in the above
diagram. For example, a "gcc -o hello.exe hello.c" is carried out as follows:

Pre-processing: via the GNU C Preprocessor (cpp.exe), which includes the headers
(#include) and expands the macros (#define).
> cpp hello.c > hello.i

The resultant intermediate file "hello.i" contains the expanded source code.
Compilation: compiler compiles pre-processed source code into assembly code for a
specific processor.
> gcc -S hello.i

The -S option specifies to produce assembly code, instead of object code. The resultant
assembly file is "hello.s".
Assembly: The assembler (as.exe) converts the assembly code into machine code in the
object file "hello.o".
> as -o hello.o hello.s

Linker: Finally, the linker (ld.exe) links the object code with the library code to produce an
executable file "hello.exe".
> ld -o hello.exe hello.o ...libraries...

Verbose Mode (-v)


You can see the detailed compilation process by enabling -v (verbose) option. For
example,
> gcc -v hello.c -o hello.exe
4

You might also like