系统编程--gcc编译

这里写目录标题

  • gcc编译四步骤
    • 简介
    • 注意点
    • 参数
      • -I
      • -D
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

gcc编译四步骤

简介

系统编程--gcc编译_第1张图片
以上是gcc编译的四步骤,每个步骤生成对应的文件

注意点

1、默认情况下,使用gcc对源文件进行编译
语法:gcc 源文件名 -o 设置编译好的文件的名字
然后执行
语法:./编译好的文件的名字

2、不过不加-o 那么最后生成的可以执行的文件就是上图中的a.out

3、如果加上上图步骤中的参数,会生成该步骤之前所有的文件,因为文件生成是一层层递进的,不是独立的
例如:gcc -S
不仅仅生成了hello.s 同时还生成了hello.i

4、我们可以使用-o,对任意阶段生成的文件进行重命名,如果不重命名,那么就是上图中默认的文件名

参数

系统编程--gcc编译_第2张图片
系统编程--gcc编译_第3张图片
-c 生成二进制文件,也就是只完成到汇编阶段
-g 编译时添加调试语句,加上该选项后,生成的可执行文件可以进行gbd调试
-Wall 显示所有的警告信息

-I

该选项用于指定头文件的位置
一般适用于,头文件与源文件分离,分别在不同的文件,并且头文件与源文件不在同一个目录下
系统编程--gcc编译_第4张图片
在同一个目录下的语法:
直接用gcc对源文件进行编译
gcc 源文件 -o 可执行文件重命名
系统编程--gcc编译_第5张图片
不在同一个目录下时:
gcc 源文件名 -o 对生成的文件重命名 -I+头文件所在目录(注意精确到所在目录即可,无需精确到头文件本身)

-D

向程序注册宏定义
系统编程--gcc编译_第6张图片
首先明确:对于上图中的程序,如果没有#define HELLO
那么HI的宏定义就不会起作用

上图是正常无错误的源文件,用紫色线标出#define HELLO
下图所用的源文件,是没有上面的那个用紫色标出的语句的

下图在编译阶段,对HELLO进行注册
就相当于上图中的#define HELLO
所以,宏定义HI起了作用

适用于当做一个开关,比如我们想要调试语句起作用,编译时就注册上那个关键的宏定义,而调试完成后,无需删除调试代码,编译时不进行关键的宏定义的注册,就相当于忽略掉了调试语句
系统编程--gcc编译_第7张图片

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

你可能感兴趣的:(linux,运维,服务器)