Compiling
#include <stdio.h>
void main() {
printf("Hello World!\n");
}$ gcc code.c#include <stdio.h>
void main() {
printf("Hello World!\n");
}$ gcc code.c
#include <stdio.h>
void main() {
printf("Hello World!\n");
}$ gcc code.c#include <stdio.h>
void main() {
printf("Hello World!\n");
}$ ./a.out
Hello World!
Compilation process
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compiler
Compilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compiler
Assembly codeCompilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compiler
Assembly codeAssembler
Compilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compiler
Assembly codeAssembler
Object codeCompilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compiler
Assembly codeAssembler
Object codeLinker
LibrariesCompilation process
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}Compiler
Assembly codeAssembler
Object codeLinker
LibrariesExecutable
Preprocessor
Preprocessor
#include <stdio.h>
void main() {
printf("Hello World!\n");
}/*
actual code of
the <stdio.h> header
*/
void main() {
printf("Hello World!\n");
}Compiler
Compiler
/*
actual code of
the <stdio.h> header
*/
void main() {
printf("Hello World!\n");
} .file "code.c"
.text
.section .rodata
.LC0:
.string "Hello World!"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
leaq .LC0(%rip), %rdi
call puts@PLT
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
Assembler
Assembler
.file "code.c"
.text
.section .rodata
.LC0:
.string "Hello World!"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
leaq .LC0(%rip), %rdi
call puts@PLT
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc

Linker
Linker



LibrariesHello World!
Thank you for your attention.
Compiling
By Ventsislav Tashev
Compiling
- 812