
linux--make/进度条
找到对应的Makefile。 找到Makefile中第⼀个目标(⼆) 为每个目标生成对应的命令。 执行所有必要的编译和连接步骤。
发布日期:2025-04-07 03:05:15
浏览次数:4
分类:精选文章
本文共 2089 字,大约阅读时间需要 6 分钟。
Linux中的make与一个进度条的例子
1. makefile是什么?
makefile 是用于自动化编译和构建项目的特殊文件,包含了一系列编译规则和依赖关系。它定义了哪些源文件需要编译,哪些目标文件需要连接,甚至可以指定清理命令。通过编写makefile,开发者可以只用一条make
命令就能完成整个项目的构建。
2. make命令的作用
make
是一个命令行工具,它负责解读和执行其 družūp,⼀般被各种开发环境(如Delphi、Visual C++、Linux的make
)所包含。make
的工作流程:
3. 依赖关系与清理
在Makefile中,依赖关系通常用箭头表示:目标文件 Depends On 源文件。
- 清理命令:清理目标文件需要明确指定,否则
make clean
可能不会自动清理。如果目标需要伪处理(always execute),可以用.PHONY
修饰。
4. 示例:进度条
process.c
:
#include#include #define NUM 101#define STYLE '='void process_v1() { char buffer[NUM]; memset(buffer, 0, sizeof(buffer)); const char *label = "|/-\\"; int len = strlen(label); int current = 0; while (current <= 100) { printf("[%-100s][%d%%][%c]\r", buffer, current, label[current % len]); fflush(stdout); buffer[current] = Style; current++; usleep(50000); } printf("\n");}
process.h
:
#pragma once#includevoid process_v1();void FlushProcess(double total, double current);
main.c
:
#include "process.h"#include#include double total = 1024.0;double speed = 1.0;void FlushProcess(double total, double current) { char buffer[NUM]; memset(buffer, 0, sizeof(buffer)); const char *label = "|/-\\"; int len = strlen(label); static int cnt = 0; double current_percent = (current * 100) / total; int num = (int)(current_percent); for (int i = 0; i < num; ++i) { buffer[i] = STYLE; } cnt %= len; printf("[%-100s][%.1f%%][%c]\r", buffer, current_percent * 100, label[cnt]); cnt++; fflush(stdout);}int main() { DownLoad(); DownLoad(); DownLoad(); DownLoad(); DownLoad(); DownLoad(); DownLoad(); DownLoad(); return 0;}
Makefile
:
SRCS = *.cOBJS = $(SRCS:.c=.o)BIN = processbar$(BIN): $(CC) -o $@ $^%.o : %.c $(CC) -c $^.PHONY: cleanclean: rm -f $(OBJS) $(BIN)
5. 优化与注意事项
- 代码清晰:确保每部分代码有注释,便于阅读和维护。
- 进度条:默认情况下,
printf
的输出不可见,需使用flush
刷新。 - 下载模拟:
usleep
用于模拟下载延迟,current
累加来表示传输进度。
通过make
命令可以自动校验依赖关系,确保所有文件存在后再执行构建步骤。如果发现缺失文件,make
会立即退出并提示错误。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年05月10日 23时56分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux Kernel 6.13 正式发布!新增很多功能和亮点
2023-02-01
Linux Kernel 内核优化方案实战
2023-02-01
Linux kernel 内核概述
2023-02-01
Linux losetup命令
2023-02-01
Linux LVM 逻辑卷管理
2023-02-01
Linux LVM学习总结——创建卷组VG
2023-02-01
linux mac地址老化时间,bridge网桥表老化时间设置
2023-02-01
Linux Mint 各个版本的差异:Cinnamon、MATE 和 Xfce
2023-02-01
linux mongo是否启动命令行,Linux下Mongodb安装和启动配置
2023-02-01
linux mysql insert_Linux编程 - 使用C在MySQL中插入数据
2023-02-01
linux mysql实现读写分离
2023-02-01
Linux Netfilter框架之conntrack连接跟踪机制
2023-02-01
Linux netstat 命令:打印网络连接情况
2023-02-01
Linux NetworkManager网络服务详解
2023-02-01
Linux NFS存储服务介绍与参数说明
2023-02-01
Linux NFS服务器的安装与配置详解
2023-02-01
Linux NFS自动挂载autofs配置
2023-02-01
linux nmap 使用
2023-02-01
linux nohup命令
2023-02-01
Linux nohup命令不再默认输出日志文件
2023-02-01