当前位置: 首页 > news >正文

Linux[Makefile]

Makefile基础结构

  1. 规则语法
target: prerequisitescommand

target:生成的目标(如可执行文件、.o文件)

prerequisites:依赖项(源码、头文件等)

command:构建命令(必须用Tab缩进)

示例:

makefile
hello: hello.cgcc -o hello hello.c

下面是模拟gcc编译文件的过程

在这里插入图片描述

其原理类似于一个栈,通过查找依赖文件,逐个生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

变量定义与使用

@默认不回显

BIN=code
CC = gcc
SRC=code.c
FLAGS=-o
RM=rm -f
$(BIN):$(SRC)$(CC) $(FLAGS) $(BIN) $(SRC)
.PHONY:clean
clean:$(RM) $(BIN)
.PHONY:print
print:@echo $(BIN)@echo $(CC)@echo $(SRC)@echo $(FLAGS)@echo $(RM)

预定义变量:$ @(目标名//冒号左边)、$ ^(所有依赖//冒号右边)、$<(遍历依赖)用于目录里有很多个.c文件需要编译时使用
所以上面可以优化为:

BIN=code
CC=gcc
SRC=$(wildcard *.c)  #自动识别.c结尾文件
OBJ=$(SRC:.c=.o)  #自动生成.o文件
LFLAGS=-o
CFLAGS=-c
RM=rm -f
$(BIN):$(SRC)$(CC) $(LFLAGS) $@ $^
%.o:%.c# 等价于code1.o,code2.o.....:code1.c,code2.c......
$(CC) $(CFLAGS) $<  #自动遍历所有.c文件
.PHONY:clean
clean:$(RM) $(BIN) $(OBJ)

在这里插入图片描述
在这里插入图片描述

赋值方式:=(延迟展开):=(立即展开)
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/175423.html

相关文章:

  • Vue3路由模式为history,使用nginx部署上线后刷新404的问题
  • Leetcode - 周赛448
  • PostgreSQL数据库的array类型
  • 密码工具类-生成随机密码校验密码强度是否满足要求
  • GPS定位方案
  • 使用阿里AI的API接口实现图片内容提取功能
  • three.js通过GEO数据生成3D地图
  • 2025年5月HCIP题库(带解析)
  • 基于计算机视觉的试卷答题区表格识别与提取技术
  • js var a=如果ForRemove=true,是“normal“,否则为“bold“
  • 网页版部署MySQL + Qwen3-0.5B + Flask + Dify 工作流部署指南
  • 自定义SpringBoot Starter-笔记
  • 当K8S容器没有bash时高阶排查手段
  • Github上如何准确地搜索开源项目
  • (二)毛子整洁架构(CQRS/Dapper/DomianEvent Handler)
  • 8.软考高项(信息系统项目管理师)-沟通管理
  • 作为主动唤醒的节点,ECU上电如何请求通讯
  • String、StringBuilder、StringBuffer的区别
  • 翻转二叉树(简单)
  • 使用原生javascript手动实现一个可选链运算符
  • 牛客——暴力、技巧、字符与数组的使用(强强联合、字符数量)
  • 【工具】解析URL获取实际图片地址下载原始FFHQ图像
  • C++:实现线程池
  • VMware中虚拟机和主机的SSH远程连接
  • langchain使用推理模型如DeepSeek,删除回答中的推理过程<think></think>
  • 数据库实验10 函数存储
  • vitepress 复杂环境引入 mermaid
  • Python技巧:TX串口输入十六进制字符串,并获取输出,RX获取输出;循环1000次,通过分析RX输出,计算丢包率。
  • 使用docker配置Mysql
  • 深度学习:图神经网络GNN、GCN及其在推荐系统的应用