栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

makefile ---- 引入

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

makefile ---- 引入

文章目录
  • 前言
  • 一、程序的编译过程
  • 二、文件的编译链接示例
  • 三、makefile的引入


前言

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

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

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

gcc -o hello hello.c

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

二、文件的编译链接示例

a.c

#include 
#include "a.h"

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

b.c

#include 
#include "a.h"
int test_fun()
{ 
	printf("it is Bn");
	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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号