make版本管理器

本文介绍了gcc的编译流程,包括预处理、编译、汇编和链接四个阶段,并详细展示了每个阶段的命令及作用。接着,文章探讨了make作为工程管理器的角色,如何通过检查文件时间戳自动编译最新文件,简化了重复编译的过程。通过一个简单的makefile示例,解释了目标文件、依赖文件和命令的编写格式。最后,提到了makefile中的变量类型、自动变量以及隐式规则和模式规则,强调了它们在简化makefile编写中的重要性。
摘要由CSDN通过智能技术生成

之前感觉makefile很神奇,今天看书正好看到这方面,看过之后只是熟悉一下

1.先看一下gcc的使用,gcc不会用,看懂makefile困难

下面是gcc支持编译源文件的后缀和解释



gcc编译流程分为四个步骤:预处理,编译,汇编,链接

下面看下gcc是如何完成上面四个步骤的,下面是个hello.c程序

#include <stdio.h>
int main()
{
    printf("hello world\n") ;
    return 0 ;
}
(1)预处理阶段

此过程主要是对头文件(include)和宏定义(#define, #ifdef)进行处理,这个程序就是把stdio.h编译进来,可以使用gcc的-E选项进行查看,这个选项就是在预处理之后停止编译

ps:gcc指令的一般格式为gcc [选项] 要编译的文件 [选项] [目标文件] ,其中目标文件可以省略,gcc默认生成可执行的文件,为:编译文件.out

所以可以使用下面的语句:

#gcc -E hello.c -o hello.i-----------     -o是指目标文件,hello.i是经过预处理的c程序



经过预处理把头文件stdio.h的内容包含进来到hello.i中了

(2)编译阶段

这个阶段检查代码的规范性是否有语法错误,检查无误后gcc把代码翻译成汇编代码,我们可以使用-S选项进行查看,使用-S选项只生成汇编代码,但不进行汇编

#gcc -S hello.i - o hello.s         如下



(3)汇编阶段

汇编阶段就是把编译阶段生成的hell.s转化成.o的二进制的目标代码,可以使用-c选项

#gcc -c hello.s -o hello.o

(4)链接阶段

就是把相应的函数库包含进来,一个是静态库,一个是动态库,静态库就是把全部代码放在可执行文件中,动态库是在运行时动态的调用

链接之后就可以生成可执行文件了    gcc hello.o -o hello,然后./hello运行

*****************************************************************

make工程管理器作用类似vs

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值