linux并发服务器 —— Makefile与GDB调试(二)

Makefile

Makefile:定义规则指定文件的编译顺序;类似shell脚本,执行操作系统命令

优点:自动化编译------通过make(解释Makefile文件中指令的命令)命令完全编译整个工程,提高软件开发效率;

如何写Makefile

文件命名:makefile/Makefile

一个Makefile可以有一个/多个规则

目标...:依赖...

命令(shell 命令)

...

目标:要生成的文件

依赖:生成目标所需的文件/目标

命令:通过命令对依赖操作生成目标

在目录在创建Makefile文件,里面的内容如下:

可能会出现 E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)

sudo rm /var/lib/dpkg/lock-frontend

随后sudo apt install make 即可安装;

在当前目录下执行make指令(会自动寻找当前目录下的Makefile):

Makefile的工作原理

  1. 命令执行前,先检查规则中的依赖是否存在

若存在则执行命令

若不存在,往下看别的规则,看能不能生成尚不存在的依赖

默认执行第一条规则,与第一条规则没有关系的规则不会执行

  1. 检查更新,在执行规则命令,比较目标和依赖文件的时间;依赖晚于目标则重新生成目标,否则规则中的命令不执行(检测更新机制)

Makefile中的变量

自定义变量:变量名=变量值 ; $(变量名) = 变量值

模式匹配:eg. %.o:%.c

$(wildcard PATTERN ...) - 获取指定目录下指定类型的文件列表

$(patsubst <pattern>,<replacement>,<text>) - 查text单词,匹配pattern用replacement替换

首先读取当前目录下的所有.c文件为src,通过patsubst将.c替换为.o后根据变量名写规则,通过模式匹配来进行其余规则指定

可以通过在最后添加

.PHONY:clean // 伪目标

clean:

rm $(objs) -f删除生成的.o文件;

make clean

GDB调试

GDB是GNU提供的调试工具;

准备工作

  1. 关掉编译器优化选项 -o

  2. 打开调式选项 -g(在可执行文件中加入源代码信息)

  3. -Wall 打开所有warning

gcc -g -Wall program.c -o program

调式时必须保证能够找到源文件

GDB常用相关命令

bash 复制代码
gcc -g -Wall test.c -o test

gdb test

断点在GDB退出后会自动清除

要跳出函数体或循环需要先清理断点

相关推荐
by2099918 分钟前
Linux 基础指令与文件操作
linux·1024程序员节
2401_8685347842 分钟前
软考网络规划设计师SSL协议知识点详解
服务器·网络
Escalating_xu1 小时前
【Linux 网络编程】手写序列化与反序列化:从 x op y 到能校验的文本协议
linux·运维·网络
润滑卫士1 小时前
油液多参数融合故障诊断:数据级融合与决策级融合方法
运维
李纲明3 小时前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
todoitbo3 小时前
在 Ubuntu ARM64 上运行 Q1 V3.0 MuJoCo 模型:加载、步进和单执行器响应
linux·运维·ubuntu·ai·机器人·仿真教程·启元
AR-26710-3 小时前
Linux Day26——传输层与三次握手
linux·运维
隔窗听雨眠4 小时前
PostgreSQL单表从Windows迁移到Linux:差异剖析、方案对比与全流程实战
linux·windows·postgresql
xinruoqianqiu4 小时前
记录Linux
linux
额额额对了4 小时前
嵌入式 Linux 实战:i.MX6ULL 上的 CAN 通信与摄像头采集
linux·运维·服务器