makefile ---- 引入

本文详细介绍了Linux环境下程序的编译过程,包括预处理、编译、汇编和链接四步,并通过实例展示了如何使用gcc进行文件的编译链接。当工程文件数量庞大时,手动编译效率低下,为此引入了makefile,它是一个自动化编译工具,能够简化编译流程,提高开发效率。通过编写makefile规则,可以实现仅修改部分文件时的快速重建目标文件。
摘要由CSDN通过智能技术生成


前言

本文所写代码是基于linux下的编程

一、程序的编译过程

  1. 预处理 : #开头的命令称为预处理,一般预处理主要做的工作是检查语法和把包含的文件包含进来和宏展开。
  2. 编译 : 把.c文件转换为.s汇编文件。
  3. 汇编 : 把.s文件转换为.o二进制文件(机器码)。
  4. 链接 : 把全部的.o文件和库文件链接起来变成可执行程序。

ps: 编译hello.c
下面这条命令会一次性把上面四个步骤给做好。

gcc -o hello hello.c

-o: (output)后面带输出的文件名

二、文件的编译链接示例

a.c

#include <stdio.h>
#include "a.h"

int main()
{
	printf("hello, world!\n");
	printf("A= %d\n", A);
	test_fun();
	return 0;
}

b.c

#include <stdio.h>
#include "a.h"
int test_fun()
{ 
	printf("it is B\n");
	return 0;
} 

a.h


#define A 1
int test_fun();

在这里插入图片描述
直接输入gcc -o test a.c b.c进行编译链接得到可执行文件test。

缺点:如果工程中的文件数上千万个,那么每次都得输入上千万个文件的文件名。同时如果你只修改了一个文件,其他的文件也需要重新进行预处理,编译,汇编,链接这些操作,效率特别低。

三、makefile的引入

什么是makefile?

makefile就是一个名字为makefile的文件。

makefile的作用是什么?

“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

makefile怎么编写?

核心规则:
目标:依赖1 依赖2
(tab键)命令
命令执行的条件:
①依赖文件比目标文件新;
②没有目标文件;

makefile:

test:a.c b.c a.h
	gcc -o test a.c b.c

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值