一、gcc编译程序时,有四个阶段
①预处理
②编译
③汇编
④链接
二、文件类型
.a 静态库文件
.C / .cc /.cxx c++源码文件
.i 预处理过的c源码文件
.ii 预处理过的c++源码文件
.o 编译后的目标文件
.s 汇编源码
.S 经过预处理的汇编源码文件
三、基本用法
用法:gcc [选项] 文件...
-o 指定输出可执行文件的文件名 (不指定 默认 a.out)
-c 只编译,不连接生成.o文件
-g 产生调试工具(gdb)
-O 对程序优化
-time 为每个子进程计时
-lname :在链接时,装载名字为”lib
name
.a“的函数库(lib三个字母和.a省略)
-static :静态链接库文件。( 动态xxxx.so(调用,节省空间) 静态xxx.a(应用程序把库包含进来) )
-w 不生成任何警告信息
-Wall 生成任何警告信息
四、头文件索引
#include <xxx.h> 尖括号表示预处理时在标准头文件里面去找xxx.h
linux平台:标准头文件路径:/usr/include
#Include "xxx.h" 双引号预处理现在当前目录进行查找,若没有则到标准路径进行查找
若头文件既不在标准头文件路径中,也不当前路径中
#include “/root/xxxx.h” //写路径 (一般不这样写)
通过gcc编译器指定
gcc -I添加头文件路径 #include<xxx.h>
gcc -L 添加库文件路径
gcc -static 禁止链接动态库文件,只允许链接静态文件
gcc -Wall 显示所有GUN提供的警告信息
gcc -O2 数字表示优化等级,数字越大等级越高
gcc -O == gcc -O0