什么是makefile?为什么需要用makefile?
正常编译一个c文件,直接敲命令:
gcc hello.c -o hello就行。
如果文件稍微多几个,gcc 里面多加几个问题也不大。
但是如果给你一个完整的项目工程,里面包含几千甚至几万个文件,而且又分成不同的文件夹,再去敲命令一个一个编译,显然有点不现实。
细心的同学会发现,凡是这些工程项目,里面都会有个叫Makefile的文件,要么这个文件直接存在,要么可以通过某种方式生成。
Makefile就是工程管理器,里面指定了本项目的编译规则。
先编译哪些,再编译哪些,要链接哪些库等等。
简单的Makefile确实挺简单,但是复杂的Makefile也很复杂。
下面来写个简单的Makefile。 假设现在只有一个源文件 hello.c。
root@turbo:~# ls hello.c root@turbo:~#打开Makefile,先写目标文件,就是最终要生成的二进制,冒号后面写上依赖文件,就是通过哪个文件可以生成目标文件。
hello:hello.c另起一行,先敲一下tab键,然后写编译的规则,就是我们平时敲的命令。
hello:hello.c gcc hello.c -o hello执行Makefile,只要敲make就行,然后就能顺利编译。
make再把文件增加两个。
Makefile中,目标文件不变,依赖文件以及下面编译规则都要增加两个文件。
这样确实麻烦了些。
Makefile里面也有变量一说,引用变量的时候,用 $ 符号。
有了变量,下次再增加什么文件,只要往后接就行。
Target=hello Object=hello.cprint.c show.c $(Target):$(Object) gcc $(Object) -o $(Target)不过一般依赖文件也不写成 .c ,因为最终的可执行文件都是由汇编后的文件合成,也就是多个 .o 文件经过链接变成了可执行文件,所以这里一般写成 .o 。
Target=hello Object=hello.oprint.oshow.o $(Target):$(Object) gcc $(Object) -o $(Target)那 .o 文件又怎么来,下面可以继续写由 .c 生成 .o ,不过Makefile里面有隐含规则,所以这几行可以不写。
make的时候,过程很清晰,先从.c 变成 .o 再把 .o 合成最终的可执行文件。
root@turbo:~# make cc -c -o hello.o hello.c cc -c -o print.o print.c cc -c -o show.o show.c gcc hello.o print.o show.o -o hello root@turbo:~#
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
二进制
+关注
关注
2文章
795浏览量
41643 -
Makefile
+关注
关注
1文章
125浏览量
19182
原文标题:如何写一个简单的Makefile
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
教你写Makefile
教你写Makefile
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,
发表于 02-10 14:24
•37次下载
驾驭Makefile
到项目中,需要的知识是线、甚至是面。这篇文章以helloworld作为开篇,接着是simple项目、complicated项目以及huge项目,一步一步的引入了Makefile中的概念,以及告诉你做一个实
发表于 01-05 17:05
•9次下载
linux makefile教程
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile
发表于 11-12 09:11
•5323次阅读
makefile的基本语法
在Makefile中,最重要的三个概念是:目标(target)、依赖关系(dependency)和命令(command)。目标是指要干什么,即运行make后生成什么;依赖是指明目标所依赖的其他目标;命令则告诉make如何生成目标,这三个概念是通过Makefile中的规则
发表于 11-12 10:15
•1.1w次阅读
windows平台下makefile操作教程
Makefile一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件
发表于 11-24 17:14
•1.2w次阅读
Makefile是什么?Makefile工作原理是怎样的?Makefile经典教程免费下载
Makefile的重要性
会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make
发表于 09-12 17:19
•0次下载
嵌入式中的Makefile应用
文章目录一.Makefile 引入二. Makefile语法1.通配符2.假象目标3.变量三.Makefile函数四.实例本文主要总结一下嵌入式开发中的Makefile,一般项目中都
发表于 11-03 17:06
•11次下载
【Makefile】Makefile与shell命令的联系
博主最近在项目实践过程中,需要深度定制项目的Makefile,其中有些复杂的流程必须得借助shell脚本才能高效地完成,为此博主特意深入学习了在Makefile种调用shell命令的方法。
Makefile可以做什么?Makefile的基本格式
Makefile可以根据指定的依赖规则和文件是否有修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。
评论