在学习如何编写makefile文件之前,我们首先需要了解什么是makefile文件:

makefile描述了整个工程的编译和链接等规则。它指明了哪些文件需要先编译,哪写文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。makefile的“自动化编译”可以极大的提高软件的开发效率。

makefile的基本规则:

目标:依赖

(tab)命令

根据这个命令来编写一个简单的makefile文件:

定义了fun1.cpp fun2.cpp head.h 和main.cpp文件,利用这几个文件来编写一个简单的nakefile文件。

 

那准备工作做完后,我们来创建makefile文件:

vim makefile

在makefile文件里面,我们写上:

main:main.cpp fun1.cpp fun2.cppg++ main.cpp fun1.cpp fun2.cpp -o main

创建好后,输入make命令,运行,得到main可执行文件

输入./main运行可执行文件:

缺点:当这些文件没有被修改时,运行make命令,它会提示我们所有的文件都是最新的,这也展现了makefile文件知道项目什么时候需要编译,那些文件需要编译,哪些不需要。但是当我们只修改了其中一个文件时,在重新执行make命令,所有的文件都会重新编译。如果这个项目里面有很多文件的话,那修改一个,就要重新编译很多个文件,这样执行效率就会很低。

为了解决这个问题,我们将makefile文件进行改写:

main_test : main.o fun1.o fun2.og++ main.o fun1.o fun2.o -o main_test.omain.o : main.cppg++ -c main.cpp -o main.o -I./fun1.o : fun1.cppg++ -c fun1.cpp -o fun1.ofun2.o : fun2.cppg++ -c fun2.cpp -o fun2.o

重新执行make命令, 当面对新的文件被修改,那么只要要重新编译被修改的文件即可。

Linux下makefile文件的编写相关推荐

  1. Linux平台Makefile文件的编写基础篇和GCC参数详解

    问:gcc中的-I.是什么意思....看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/incl ...

  2. linux下Makefile中包含有shared library动态链接库文件时候的简单例子

    如果不知道什么是makefile,可以首先看我的另一篇博客: linux下Makefile的简单例子及解释 http://www.cnblogs.com/lihaozy/archive/2012/08 ...

  3. Linux下Makefile编写语法

    原创 Linux下Makefile编写语法 2016-07-29 08:31:53 Datrilla 阅读数 1386更多 分类专栏: Linux Makefile 版权声明:本文为博主原创文章,遵循 ...

  4. linux下查看文件的权限,Linux下查看文件权限、修改文件权限的方法

    查看权限命令查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la 如 ls -l www.jb51.net  //这里表示查看www.jb51.net目录 修改权限命令 chmod 77 ...

  5. Makefile文件的编写(实例详解)

    1.什么是Makefile? 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译 ...

  6. linux 下删除文件的 操纵

    linux   下删除 文件的 方法::: 1-  remove remove(删除文件) 相关函数 link,rename,unlink 表头文件 #include<stdio.h> 定 ...

  7. 【转】Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现

    转自:Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数,是通过matl ...

  8. Linux内核Makefile文件

    Linux内核Makefile文件(翻译自内 核手册) 转载自:http://blog.chinaunix.net/uid-21651676-id-60377.html Linux 内核Makefil ...

  9. Linux下Makefile的automake生成全攻略(转)

    Linux下Makefile的automake生成全攻略(转)[@more@] 文/余涛 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便 ...

最新文章

  1. 猴子会照镜子吗?科学家的这一研究意义非凡!
  2. java properties读取 封装_java properties 文件读取踩坑记
  3. 成功解决ImportError: cannot import name ‘ft2font‘ from ‘matplotlib‘
  4. 轻量级社会化分享openShare源码解析
  5. 自由自在休闲食品带给小资的冰淇淋生活
  6. Scala入门到精通——第十节 Scala类层次结构、Traits初步
  7. poj 3522(最小生成树应用)
  8. hibernate中的id特殊属性hilo剖解(多用于继承关系)
  9. 在c语言中利用链表常见问题,C语言,链表中遇到棘手有关问题
  10. VMware ESXi/ESX 的内部版本号和版本 (2143832)-2020-10-27更新
  11. jQuery:ajax中form表单serialize()序列化方法
  12. 极客大学架构师训练营 微服务架构 领域驱动设计DDD 中台架构、组件设计原则 第十次作业
  13. 平板电脑全国产化电子元件推荐方案
  14. 计算机三级网络技术考过指南 【历年考点汇总】
  15. 教学|zbrush:利用分组Dynamesh,对模型进行重建细分
  16. 批处理一键打开Windows远程桌面
  17. C# 导入EXCEL 报错外部表不是预期的格式错误
  18. Mysql数据库-初识Mysql
  19. 软件分享——Bilibili缓存视频合并软件,m4s音视频合并工具
  20. 【关于VB连接EXCEL数据库以ADODB方式】

热门文章

  1. 操作系统(设备管理)
  2. win10壁纸不能幻灯片放映_怎么设置Win10系统在无电源情况下开启壁纸幻灯片放映?...
  3. 【漫画】分享16张程序员高端漫画
  4. 计算机分支结构语句的实验报告,c语言 实验报告三 分支结构程序设计
  5. 600以内的蓝牙耳机哪款好?盘点600元蓝牙耳机性价比之王
  6. 骨传导耳机哪款性价比高,最具性价比骨传导耳机推荐
  7. 江苏工匠杯-unseping序列化,正则绕过(全网最简单的wp)
  8. 莫队算法学习笔记(二)——带修莫队
  9. bwareaopen
  10. 计算机办公软件应用中级,计算机办公软件应用中级证