当前位置:首页 > 系统教程 > 正文

Linux开发工具make/Makefile详解(从零开始构建进度条小程序)

Linux开发工具make/Makefile详解(从零开始构建进度条小程序)

在Linux环境下进行C/C++开发时,makeMakefile是必不可少的工具。它们能自动化编译过程,让你只需一个命令就能构建整个项目。本文将以一个简单的进度条小程序为例,手把手教你编写Makefile,即使你是小白也能轻松掌握这些Linux开发工具

什么是make和Makefile?

make是一个命令工具,它读取一个名为Makefile的文件,根据文件中的规则自动决定如何编译和链接程序。Makefile定义了源文件之间的依赖关系以及编译命令。通过make,你只需执行make,就能完成所有编译工作,大大提高了开发效率。

编写第一个Makefile

首先,我们创建一个简单的C程序main.c,它打印一些信息。然后编写Makefile来编译它。以下是示例:

    # main.c#include int main() {    printf("Hello, make!");    return 0;}# Makefilemain: main.c	gcc -o main main.c  

Makefile中,main: main.c表示目标main依赖于main.c,下一行的gcc -o main main.c是生成目标的命令(注意前面必须是一个Tab缩进)。保存后,在终端执行make,就会生成可执行文件main

进度条小程序实战

接下来,我们实现一个经典的进度条小程序。它模拟文件下载或任务处理的进度,通过不断刷新同一行来显示百分比和旋转光标。我们将编写progress.c,并用Makefile管理编译。

    // progress.c#include #include void progress_bar(int rate) {    char bar[102];    const char *lable = "|/-\";    bar[rate] = " ";    for (int i = 0; i < rate; i++) {        bar[i] = "=";    }    printf("[%-100s][%d%%][%c]
", bar, rate, lable[rate % 4]);    fflush(stdout);}int main() {    for (int i = 0; i <= 100; i++) {        progress_bar(i);        usleep(50000);    }    printf("Done!");    return 0;}  

代码中,progress_bar函数根据当前进度rate填充一个长度为100的数组,并打印进度条、百分比和旋转动画。主循环从0到100,每次更新后休眠50ms。运行后你会看到动态的进度条

Linux开发工具make/Makefile详解(从零开始构建进度条小程序) make  Makefile 进度条小程序 Linux开发工具 第1张

为进度条编写Makefile

现在为进度条小程序创建Makefile,让它支持编译、清理等操作:

    # Makefile for progress barCC = gccCFLAGS = -Wall -gTARGET = progressOBJS = progress.o$(TARGET): $(OBJS)	$(CC) $(CFLAGS) -o $(TARGET) $(OBJS)progress.o: progress.c	$(CC) $(CFLAGS) -c progress.c.PHONY: cleanclean:	rm -f $(OBJS) $(TARGET)  

这个Makefile使用了变量、自动推导和伪目标。执行make会生成progressmake clean删除中间文件和目标。通过这种方式,即使项目变大,也能轻松维护。

总结

本文介绍了Linux开发工具中的makeMakefile,并通过一个生动的进度条小程序演示了实际应用。掌握了这些工具,你的开发效率将大幅提升。希望这篇教程对你有帮助,快去尝试编写自己的Makefile吧!