- 预处理阶段:hello.c -- "gcc -E预处理,头文件展开,宏替换" --> hello.i
- 编译阶段:hello.i -- "gcc -s生成汇编文件" --> hello.s
- 汇编阶段:hello.s -- "gcc -c生成二进制文件" --> hello.o
- 链接阶段:hello.o -- "调用ld进行链接" --> a.out
使用如下两个代码来进行操作
test.c
// file: test.c
#include <stdio.h>
int add(int a, int b);
int main() {
int a = 3;
int b = 5;
int sum = add(a, b);
printf("Sum is %d\n", sum);
return 0;
}
add.c
// file: add.c
int add(int a, int b) {
return a + b;
}
预处理
gcc -E add.c -o add.i
gcc -E test.c -o test.i
编译
gcc -S add.i -o add.s
gcc -S test.i -o test.s
汇编
gcc -c add.s -o add.o
gcc -c test.s -o test.o
链接
将上述两个代码链接在一起(必须有main函数才可以)
gcc test.o add.o -o test