前言
本文介绍 Linux 开发中常用的核心工具链和底层逻辑,涵盖 Makefile 规则、Git 版本控制流程、GDB 调试方法以及 C 语言基础实践。
make/makefile
make 是一个命令
语法:
make 目标文件名(例如:make clean)
makefile是一个文件(创建Makefile或makefile均可),需与使用命令的文件放在同一目录下。
术语说明
- 依赖关系:第一行定义目标文件与依赖文件的关系(例如
text依赖于text.c)。 - 依赖方法:第二行定义如何生成目标文件。注意:依赖方法行必须以 Tab 键开头,不能使用空格。
makefile 工作规则
- clean 目标:通常用于清除所有生成的目标文件,无需依赖文件。
- 引申:在依赖关系前加上
.PHONY可让 make 不判断该目标是否为真实文件,常用于clean等伪目标。
- 引申:在依赖关系前加上
- 默认目标:
makefile中第一个出现的文件名是默认目标,直接输入make即可调用。 - 增量编译:
make会根据源文件和目标文件的修改时间判定是否需要重新编译。若源文件未修改,则跳过编译以提高效率。 - 变量与符号:
@:加在依赖方法前,使执行过程不回显命令。$@:表示目标文件。$^:表示所有依赖文件。变量 = 值:定义变量(例如lib=libmymath.a)。
文件的三个时间
- Access:最近一次访问时间(多次访问时更新)。
- Modify:最近一次内容修改时间(make 判断是否重新编译主要看此时间)。
- Change:最近一次属性修改时间(如文件大小变化)。
Linux 第一个小程序-进度条
回车和换行
- 回车 (
\r):光标回到行首。 - 换行 (
\n):光标移动到下一行起始位置。 - 现代终端通常将
\n处理为回车换行组合。
缓冲区
stdout默认为行缓冲,未遇到换行符前数据暂存于缓冲区,程序结束或调用fflush后释放。
程序的代码展示
#include <stdio.h>
#include
{
i = ;
bar[];
(bar, , (bar));
*lable = ;
(i <= ) {
(, bar, i, lable[i % ]);
fflush();
bar[i++] = ;
usleep();
}
();
;
}


