这里写目录标题
- gcc编译四步骤
- 简介
- 注意点
- 参数
- -I
- -D
- 二级目录
- 一级目录
- 二级目录
- 二级目录
- 二级目录
- 一级目录
- 二级目录
- 二级目录
- 二级目录
- 一级目录
- 二级目录
- 二级目录
- 二级目录
- 一级目录
- 二级目录
- 二级目录
- 二级目录
gcc编译四步骤
简介
以上是gcc编译的四步骤,每个步骤生成对应的文件
注意点
1、默认情况下,使用gcc对源文件进行编译
语法:gcc 源文件名 -o 设置编译好的文件的名字
然后执行
语法:./编译好的文件的名字
2、不过不加-o 那么最后生成的可以执行的文件就是上图中的a.out
3、如果加上上图步骤中的参数,会生成该步骤之前所有的文件,因为文件生成是一层层递进的,不是独立的
例如:gcc -S
不仅仅生成了hello.s 同时还生成了hello.i
4、我们可以使用-o,对任意阶段生成的文件进行重命名,如果不重命名,那么就是上图中默认的文件名
参数
-c 生成二进制文件,也就是只完成到汇编阶段
-g 编译时添加调试语句,加上该选项后,生成的可执行文件可以进行gbd调试
-Wall 显示所有的警告信息
-I
该选项用于指定头文件的位置
一般适用于,头文件与源文件分离,分别在不同的文件,并且头文件与源文件不在同一个目录下
在同一个目录下的语法:
直接用gcc对源文件进行编译
gcc 源文件 -o 可执行文件重命名
不在同一个目录下时:
gcc 源文件名 -o 对生成的文件重命名 -I+头文件所在目录(注意精确到所在目录即可,无需精确到头文件本身)
-D
向程序注册宏定义
首先明确:对于上图中的程序,如果没有#define HELLO
那么HI的宏定义就不会起作用
上图是正常无错误的源文件,用紫色线标出#define HELLO
下图所用的源文件,是没有上面的那个用紫色标出的语句的
下图在编译阶段,对HELLO进行注册
就相当于上图中的#define HELLO
所以,宏定义HI起了作用
适用于当做一个开关,比如我们想要调试语句起作用,编译时就注册上那个关键的宏定义,而调试完成后,无需删除调试代码,编译时不进行关键的宏定义的注册,就相当于忽略掉了调试语句