前言

在正式进入makefile相关知识讲述之前,这里可能需要对makefile本身的应用场景进行一点简单的陈述。如果你在linux环境下使用源码安装软件时,其中一个过程就是执行make命令。make命令本身实际上就是按照makefile中的内容对源码进行编译。那么对于makefile本身我想先总结一下这项技术的特点

  • makefile本身只是对编译流程进行规定,简单理解就是有了makefile之后我们只需要通过make命令来执行makefile中定义的编译规则即可完成代码的编译工作
  • 如果没有makefile我们可以手动完成源码的编译工作,但是对于复杂的工程项目,如果还是按照手动编译,编译工作本身就需要消耗大量的时间,效率低,使用成本高。其次,对项目进行手动编译的前提是对项目本身的的模块设计以及编译链接过程有详细的了解,这本身又会增加其他人使用该软件的难度。
  • makefile本身可以定义多个目标生成过程,开发者可以根据不同的需要设计不同的目标,一些特定的功能只需要存在于特定的目标程序中。而一个常见的特定功能就是测试程序。但是对于一般的软件使用者来说,测试程序又是不需要的。
  • makefile支持多线程并发编译,并且会智能重新编译那些修改后的源文件

makefile基础结构

makefile本身内容较多,这里先介绍一些makefile相关的基础概念,通过这些基础概念我们可以更加清晰的了解其功能。
首先,makefile只是一个基础文本类文件,所有文本类编辑器可以直接进行编辑,常见格式如下

targets : prescommand

基础结构是比较容易理解的,targets就是我们的目标文件,pres就是在生成目标文件时的依赖文件,command就是需要执行的命令,对于常见额C语言程序,示例如下

test_makefile:test_makefile.cgcc -o test_makefile test_makefile.c

可能大家看到这里就明白makefile实际上就是将一些编译过程中的命令写入到文本文件中,当然上面的案例较为简单,仅仅用作展示,后面我会逐步讲解makefile本身所具有的特殊之处

Makefile教程一相关推荐

  1. AUTOCAD自学教程一

    AUTOCAD自学教程一 AUTOCAD自学教程 在学习任何一款软件的时候,第一步也是非常必要的一步就是如何的安装软件. 下面我们讲解如何的安装这个软件. 1.安装autocad 2.安装产品 3.正 ...

  2. pytorch打印模型参数_Pytorch网络压缩系列教程一:Prune你的模型

    Pytorch网络压缩系列教程一:Prune你的模型 本文由林大佬原创,转载请注明出处,来自腾讯.阿里等一线AI算法工程师组成的QQ交流群欢迎你的加入: 1037662480 深度学习模型取得了前所未 ...

  3. MongoDB 教程一: 安装和使用 (Mongodb启动命令mongod参数说明)

    视频: MongoDB 教程一: 安装和使用 Mongodb启动命令mongod参数说明 我们可以通过mongod --help查看mongod的所有参数说明,以下是各参数的中文解释. 基本配置 –q ...

  4. 初识c语言教程,第1课C语言教程一: 初识C程序.doc

    第1课C语言教程一: 初识C程序 第1课 初识C程序 教学目标 1.计算机语言介绍 2.了解C语言 3.如何学好C语言(多做题,多上机调试程序) 4.C语言上机调试环境 教学过程 计算机程序设计语言的 ...

  5. 大学英语综合教程一 Unit 8 课文内容英译中 中英翻译

    大学英语综合教程一 Unit 8 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  6. 大学英语综合教程一 Unit 2 课文内容英译中 中英翻译

    大学英语综合教程一 Unit 2 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  7. 原创 | k8s系列教程一:开篇

    作者:潘吉祥 欢迎加入k8s学习系列教程,在接下来的系列文章,你将可以在较短的时间内达到入门k8s的效果. k8s是什么 Kubernetes(K8S)作为Google在2014年发布的一个开源项目, ...

  8. 大学英语综合教程一 Unit 6 课文内容英译中 中英翻译

    大学英语综合教程一 Unit 6 课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 本文 ...

  9. R语言七天入门教程一:配置运行环境

    R语言七天入门教程一:配置运行环境 一.R语言介绍 1.R语言是什么? 参考:R语言教程-R语言介绍 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析.绘图.数据挖掘.R语言有丰富的 ...

  10. Spring认证中国教育管理中心-Spring Data Neo4j教程一

    原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程一(Spring中国教育管理中心) 5. 开始 我们为 SDN 提供了 Spring Boot 启动器.请通过您的依赖管 ...

最新文章

  1. const,readonly 这些你真的懂吗? 也许会被面试到哦。。。
  2. Linux 上不可修改的文件和目录
  3. 编写一个简单的assert宏
  4. Codeforces round 1098
  5. 中外计算机百科知识,计算机百科知识.doc
  6. 385. Mini Parser
  7. android每日定时推送通知,Android使用JobScheduler定期推送本地通知实例代码
  8. Oracle 10g 中 X$KCVFH 说明
  9. 一篇让你看懂卷积神经网络
  10. HDLBits学习笔记——移位寄存器
  11. 小型网络游戏实例(vc++)——网络五子棋
  12. OpenWrt之DNS域名解析系统(/etc/resolv.conf)
  13. 中国首善刘强东出手了!给京东高管降薪,给普通员工提高福利!并拿出100亿保障”兄弟“基础住房...
  14. SMP,UMA,NUMA,MPP的概念理解
  15. 在桌面上离线编辑Office Web Apps文档
  16. python逐行调试_python如何单步调试
  17. Python数据分析与可视化期末简答题复习
  18. 逝流年沧桑伤感日志_安静得,脑袋总在回忆从前
  19. 电脑打开telnet功能
  20. Java控制语句详解

热门文章

  1. 需求文档、需求分析报告、需求规格说明书分析
  2. Matlab遗传算法工具箱的使用
  3. 微分方程数值解法(2)——椭圆型方程的有限差分法
  4. 请教有关网络管理的方法
  5. Windows驱动开发(中间层)
  6. NERO8.3.6.0(官方完整版+序列号)
  7. [python小工具]小说分割器
  8. VB.NET异形窗体
  9. Windows XP操作系统自带工具应用详解(转)
  10. EditPlus使用技巧