GCC学习笔记(一)–编译流程
GCC编译过程
test.c ===> 预处理器 (-E) ===> test.i (文本)
test.i ===> 编译器 (-S) ===> test.s (文本)
test.s ===> 汇编器 (-c) ===> test.o (二进制)
test.o ===> 链接器 ===> test (二进制)
GCC编译选项
选项 | 描述 |
---|---|
-E | 产生 .i 文件后停止 |
-S | 产生 .s 文件后停止 |
-c | 产生 .o 文件后停止 |
-o | 产生目标文件(.i, .s, .o, 可执行文件) |
-Wall | 显示警告信息 |
-g | 加入调试信息 |
-Idir | 将dir目录加入搜索头文件的目录路径 |
-Ldir | 将dir目录加入搜索库的目录路径 |
-llib | 链接lib库 |
GCC编译命令
gcc -Wall -g -E test.c -o test.i (预处理)
gcc -Wall -g -S test.i -o test.s (编译)
gcc -Wall -g -c test.s -o test.o (汇编)
gcc -Wall -g test.o -o test (链接)
gcc -Wall -g test.c -o test (一步到位)
多文件编译
一次性编译
gcc -Wall -g test1.c test2.c test3.c -o test
独立编译
gcc -Wall -g -c test1.c -o test1.o
gcc -Wall -g -c test2.c -o test2.o
gcc -Wall -g -c test3.c -o test3.o
gcc -Wall -g test1.o test2.o test3.o -o test
使用独立编译的好处:
当一个项目中包含大量源文件时,当一个文件改动后,使用独立编译可以只编译改动的文件,
不必编译所有文件,从而节省编译时间。