【Linux】基础开发工具指令汇总(yum/apt、Vim、gcc/g++、Makefile、Git、gdb/cgdb)
目录
- 一、yum/apt软件包管理器
-
- ①【查看软件包】
- ②【安装/卸载】
- ③【镜像源】
- 二、Vim编辑器
- 三、gcc/g++编译器
-
- ①【GCC/G++ 编译四阶段】
- ②【编译选项】
- ③【静动态库】
-
- 1. 库文件位置
- 2. 动态库(共享库)
- 3. 静态库
- 4. 动静态库对比
- 四、Makefile自动化构建
-
- ①【Makefile 核心规则】
- ②【变量系统详解】
- ③【通配符与自动变量】
- ④【假想目标(.PHONY)】
- ⑤【核心函数库】
- 五、Git版本控制器
-
- ①【本地操作四步曲~】
- ②【远程协作三剑客~】
- 六、gdb/cgdb调试器
-
- ①【安装与启动】
-
- 1. 安装(Debian/Ubuntu)
- 2. 启动调试
- ②【核心操作速查表】
-
- 1. 模式切换
- 2. 代码窗口操作(Esc 模式)
- 3. 命令窗口操作(i 模式)
一、yum/apt软件包管理器
①【查看软件包】
# CentOS yum list | grep package_name # Ubuntu apt search package_name
②【安装/卸载】
# 安装 sudo yum install -y [软件名] # CentOS sudo apt install -y [软件名] # Ubuntu # 卸载 sudo yum remove package # CentOS sudo apt remove package # Ubuntu
③【镜像源】
- 阿里云:https://developer.aliyun.com/mirror/
- 清华大学:https://mirrors.tuna.tsinghua.edu.cn/
- 中科大:https://mirrors.ustc.edu.cn/
- 北交大:https://mirror.bjtu.edu.cn/
- 中科院:https://mirror.iscas.ac.cn/
- 上交大:https://ftp.sjtu.edu.cn/
- 网易:https://mirrors.163.com/
注意:操作需网络畅通,通过
ping www.baidu.com验证。
二、Vim编辑器
①【三个模式间的切换】
iaoEscShift + ;:)②【命令模式的命令】
1. 光标移动
h/j/k/lggG (Shift+g)10G$^wb2. 文本编辑
yy3yyp3pdd3ddxXuCtrl + r~ (Shift+`)3. 高级功能
rra 替换为a)RShift + 3n③【底行模式的命令】
:w:q:wq:q!:set nu:10:/_keyword:?_keyword:vs _filename:!ls④【多文件分屏命令】
:vs file.cCtrl + ww:sp file.c⑤【批量注释命令技巧】
-
添加注释:
Ctrl + v进入块选择模式- 方向键选择行范围
Shift + i输入//→Esc应用
-
删除注释:
Ctrl + v选择注释符号- 按
d删除
⑥【Vim配置优化建议】
在 ~/.vimrc 中添加(修改配置文件):
set nu \" 显示行号set tabstop=4 \" Tab缩进4空格syntax on \" 语法高亮colorscheme desert \" 配色方案(需安装)
提示:
- 使用
vimtutor命令练习基础操作- 插件推荐:
TagList(代码导航)、WinManager(分屏管理)- 异常退出时用
vim -r恢复临时文件
三、gcc/g++编译器
①【GCC/G++ 编译四阶段】
-E.igcc -E test.c -o test.i-S.sgcc -S test.i -o test.s-c.ogcc -c test.s -o test.ogcc test.o -o app记忆技巧:
- 选项顺序
-E→-S→-c对应键盘 ESc 键- 文件后缀
.i→.s→.o组成 iso
②【编译选项】
-o 目标文件gcc test.c -o myapp-staticgcc test.c -static -o app-ggcc -g test.c -o debug_app-O2gcc -O2 test.c -o fast_app-l库名-lm)gcc calc.c -lm -o calc③【静动态库】
1. 库文件位置
/usr/include/lib 或 /usr/lib/usr/local/include/usr/local/lib2. 动态库(共享库)
- 特征:
- 文件名:
libXXX.so(如libc.so.6) - 运行时加载,多程序共享内存中的同一份代码
- 文件名:
- 优点:
- 节省磁盘/内存空间(如C标准库仅需1份)
- 更新无需重新编译程序(替换
.so文件即可)
- 缺点:
- 依赖环境(缺失库文件导致程序崩溃)
- 版本冲突风险(\"DLL地狱\"问题)
- 检查命令:
ldd app # 查看动态库依赖file app # 显示 \"dynamically linked\"
3. 静态库
- 特征:
- 文件名:
libXXX.a(如libc.a) - 编译时嵌入程序,生成独立可执行文件
- 文件名:
- 优点:
- 程序完全独立(无外部依赖)
- 加载速度快(无运行时链接开销)
- 缺点:
- 文件体积大(重复拷贝库代码)
- 更新需重新编译程序
- 编译方式:
# 安装静态库(CentOS)sudo yum install glibc-static# 静态链接编译gcc test.c -static -o static_app
4. 动静态库对比
.so.a四、Makefile自动化构建
①【Makefile 核心规则】
目标(target): 依赖(prerequiries)... 命令(command) # 必须用 Tab 缩进!
app, cleanmain.o, utils.cgcc -c main.c关键特性:
- 基于时间戳的智能编译(仅重新编译修改过的文件)
- 使用
touch命令可强制触发重新编译
②【变量系统详解】
VAR = valueVAR ?= valueVAR := valueVAR += value示例:
CC := gcc # 立即变量CFLAGS = -Wall -O2 # 延时变量CFLAGS += -Iinclude # 追加为延时变量
③【通配符与自动变量】
%%.o: %.c$@gcc -c $< -o $@$<gcc -c $< -o $@$^gcc $^ -o $@实战示例:
# 编译所有 .c 文件为 .o%.o: %.c $(CC) $(CFLAGS) -c $< -o $@# 链接可执行文件app: main.o utils.o $(CC) $^ -o $@
④【假想目标(.PHONY)】
解决目标名与文件冲突问题:
.PHONY: clean # 声明为假想目标clean: rm -f *.o app
即使存在名为
clean的文件,make clean仍能执行
⑤【核心函数库】
$(wildcard *.c)SRC = $(wildcard src/*.c)$(patsubst %.c,%.o,$(SRC))OBJ = $(patsubst %.c,%.o,$(SRC))$(foreach d,dirs,$d/built-in.o)SUBDIR_OBJ = $(foreach d,$(SUBDIRS),$d/built-in.o)$(filter %.c,$(FILES))C_FILES = $(filter %.c,$(FILES))$(filter-out %.h,$(FILES))NO_HEADERS = $(filter-out %.h,$(FILES))五、Git版本控制器
①【本地操作四步曲~】
git addgit commitgit loggit status②【远程协作三剑客~】
git clonegit pullgit fetch + git mergegit push六、gdb/cgdb调试器
①【安装与启动】
1. 安装(Debian/Ubuntu)
sudo yum install cgdb # CentOSsudo apt install cgdb # Ubuntu
2. 启动调试
cgdb ./test.exe # 调试可执行文件启动后界面分为两部分:
②【核心操作速查表】
1. 模式切换
Esci2. 代码窗口操作(Esc 模式)
空格键j / ko/?n+-ggGCtrl + bCtrl + f3. 命令窗口操作(i 模式)
- 支持所有 GDB 命令:
b main # 在 main 函数设断点 r # 运行程序 s # 单步进入(Step into) n # 单步跳过(Step over) p variable # 打印变量值



