GCC入门详解

一、基本概念

gcc编译源程序分为4个阶段:预处理、编译、汇编、链接

1、预处理阶段:将头文件的内容插入到源代码中、替换宏定义、去掉注释等。预处理后的文件后缀名为.i

2、编译阶段:编译器将预处理后的文件翻译成汇编代码文件(后缀名为.s)

3、汇编阶段:汇编器将汇编代码文件转化成二进制目标文件(后缀名为.o)

4、链接阶段:链接器将目标代码文件与实现库函数的代码合并,生成可执行文件(可执行文件在windows中以.exe结尾)

二、命令使用

命令格式:gcc <文件> <选项>

1、直接编译产生可执行文件

选项 说明
-o <文件名> 在选项-o的后面跟着输出文件名

命令示例:

1. gcc main.c -o hello

gcc分别执行开头说的那四个阶段,生成可执行文件hello(如果不加上-o hello,Unix系统的默认输出文件名是a.out)

2. gcc main.c plus.c -o program (多个文件用空格分开)

gcc将这两个文件编译链接形成可执行文件program

 2、指定生成各阶段的文件

选项 说明
-E 预处理后的文件(.i)
-S 编译后得到的汇编代码文件(.s)
-c 汇编后得到的二进制目标文件(.o)

命令示例:

1. gcc main.c -E -o main.i (使用-E选项必须指定输出文件名)

生成main.i文件

2. gcc main.c plus.c -S

生成main.s和plus.s汇编代码文件

3. gcc main.c plus.c -c

生成main.o和plus.o目标文件

执行上面的第一条命令,查看源文件和预处理后的.i文件。可以发现#include "plus.h"被换成了头文件里的内容,宏定义的Pi也已经替换成了3

GCC入门详解_第1张图片

 3、其他常用选项

选项 说明
-Wall

生成所有警告信息。(gcc默认只会生成错误信息,不会生错误信息)

-On(n为1到3的数) 对代码进行优化(减少程序运行时间和程序大小)(n的数字越大,优化等级越高)
-I 指定包含的头文件的路径

还有一些专门用于静态库和动态库的选项,这里就不再列举了。

你可能感兴趣的:(Linux基础,c语言,linux,ubuntu)