热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

终极目标_makefile文件详解

篇首语:本文由编程笔记#小编为大家整理,主要介绍了makefile文件详解相关的知识,希望对你有一定的参考价值。1.1个规则

篇首语:本文由编程笔记#小编为大家整理,主要介绍了makefile文件详解相关的知识,希望对你有一定的参考价值。



1.1个规则

目标:依赖条件
命令(命令前有一个tab的缩进)

makefile文件详解_后缀

终极目标一般写在第一行,不然make会把第一行当作终极目标,比如你的第一行是add.o:add.c,就会把它当成终极目标,只执行gcc -c add.c -o add.o就结束了,这时候只需要在开头加上all(All):a.out,或者在make的时候加上你的终极目标。

  • 如果想生成目标,检查规则中的依赖条件是否存在,如果不存在,则寻找是否有规则用来生成该依赖文件。
  • 检查规则中的目标是否需要更新,必须先检查它的所有依赖,依赖中有任意一个被更新,则目标必须更新。

2.2个函数

  • src=$(wildcard *.c) ​找到当前目录下所有后缀为.c的文件,赋值给src
  • obj=$(patsubst %.c,%.o,$(src))​把src变量里所有后缀为.c的文件替换为.o,将参数3中,包含参数1的部分,替换为参数2

makefile文件详解_赋值_02

clean没有依赖,rm前加-,作用是删除不存在文件时,不报错,顺序执行结束

3.个自动变量

  • $@:在规则的命令中,表示规则中的目标
  • $^:表示规则的命令中,表示所有的依赖条件
  • $<:表示规则的命令当中,表示第一个依赖条件,如果将该变量应用在模式规则中,它将依赖条件列表
  • 依次取出,套用模式规则。

makefile文件详解_后缀_03

make clean -n 可以查看你删的对不对

makefile文件详解_文件名_04

4.模式规则

%.o:%.c

     gcc -c $<-o %@

静态模式规则

$(obj)%.o:%.c

      gcc -c $<-o %

5.伪目标

.PHONY:clean ALL

makefile文件详解_赋值_05

当.c和.0及.h分别再src、obj、inc等目录下时

makefile文件详解_文件名_06

  • 一般命名 makefile 或者 Makefile,直接使用make命令
  • 如果命名为其他名字,可以使用make -f 文件名 -f:指定文件执行make命令

推荐阅读
  • 本文介绍了在Makefile及Android.mk文件中添加打印输出信息的方法,并详细解析了Android编译过程中的关键步骤,包括环境变量的设置与编译脚本的执行。 ... [详细]
  • 本文将探讨如何在一个目录下针对多个源文件编写高效的Makefile,通过实例介绍从基础到高级的Makefile编写技巧。 ... [详细]
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细记录了作者从7月份的提前批到9、10月份正式批的秋招经历,包括各公司的面试流程、技术问题及HR面的常见问题。通过这次秋招,作者深刻体会到了技术积累和面试准备的重要性。 ... [详细]
  • 本文深入探讨了在安装PostgreSQL数据库系统时,执行Configure、Make及Make Install命令的具体含义与作用。 ... [详细]
  • QEMU环境下加载首个Linux驱动模块
    本文介绍了如何在Ubuntu 20.04系统上使用QEMU虚拟机加载一个简单的Linux驱动模块。此过程涉及Linux内核4.0版本的配置与编译。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • C基本语法C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象-对象具有状态和行为 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文详细记录了在Ubuntu 9.10操作系统上从零开始搭建LAMP(Linux, Apache, MySQL, PHP)环境的过程,包括遇到的问题及解决方案。旨在为初次尝试搭建LAMP环境的开发者提供参考。 ... [详细]
author-avatar
mobiledu2502911457
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有