1、GCC简介:https://zh.wikipedia.org/wiki/GCC


2、简单编译

如有以下c程序,命名为test.c

#include <stdio.h>

int main(){
	printf("hello wow ~\n");
	return 0;
}


简单编译命令是:

 

gcc test.c -o test


现在我们将其分解为四个步骤:

 

2.1预处理

 

gcc -E test.c -o test.i
gcc -E test.c

 


2.2编译为汇编代码(Compilation)

 

gcc -S test.i -o test.s

 


2.3汇编(Assembly)

 

gcc -c test.s -o test.o


gas汇编器负责将其编译为目标文件

 


2.4连接(Linking)

gcc test.o -o test


gcc连接器是gas提供的,负责将程序的目标与所需的所有附加目标文件连接起来,最终生成可执行文件。附加的文件包括静态连接库和动态连接库。


2.5执行

 

./test


3、多个程序文件的编译

 

通常整个文件是由多个源文件组成的,相应地也就形成了多个编译单元,使用gcc能够很好的管理这些编译单元。假如有一个由test1.c,test2.c连个源文件组成的程序,为了对它们进行编译,并最终生成可执行文件test,可以使用如下命令:

 

gcc -c test1.c test2.c -o test


它相当于gcc依次执行下面三条语句:

 

 

gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test