> 技术文档 > 【Linux】基础开发工具指令汇总(yum/apt、Vim、gcc/g++、Makefile、Git、gdb/cgdb)

【Linux】基础开发工具指令汇总(yum/apt、Vim、gcc/g++、Makefile、Git、gdb/cgdb)


目录

  • 一、yum/apt软件包管理器
    • ①【查看软件包】
    • ②【安装/卸载】
    • ③【镜像源】
  • 二、Vim编辑器
    • ①【三个模式间的切换】
    • ②【命令模式的命令】
      • 1. 光标移动
      • 2. 文本编辑
      • 3. 高级功能
    • ③【底行模式的命令】
    • ④【多文件分屏命令】
    • ⑤【批量注释命令技巧】
    • ⑥【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编辑器

①【三个模式间的切换】

操作 功能 模式切换 i 光标前插入 命令→插入 a 光标后插入 命令→插入 o 下方新建行插入 命令→插入 Esc 返回命令模式 插入/底行→命令 Shift + ; 进入底行模式(:) 命令→底行

②【命令模式的命令】

1. 光标移动

命令 功能 h/j/k/l 左/下/上/右移动 gg 跳至文件首行 G (Shift+g) 跳至文件末尾 10G 跳至第10行 $ 跳至行尾 ^ 跳至行首 w 跳至下一单词开头 b 跳至上一单词开头

2. 文本编辑

命令 功能 yy 复制当前行 3yy 复制3行 p 粘贴 3p 粘贴3次 dd 删除当前行 3dd 删除3行 x 删除光标处字符 X 删除光标前字符 u 撤销操作 Ctrl + r 重做操作(恢复撤销) ~ (Shift+`) 大小写转换

3. 高级功能

命令 功能 r 替换单个字符(如 ra 替换为a) R 进入替换模式(连续替换) Shift + 3 高亮查找光标处单词 n 跳至下一个匹配项

③【底行模式的命令】

命令 功能 :w 保存文件 :q 退出 :wq 保存并退出 :q! 强制退出(不保存) :set nu 显示行号 :10 跳至第10行 :/_keyword 向下搜索关键词 :?_keyword 向上搜索关键词 :vs _filename 垂直分屏打开文件 :!ls 不退出Vim执行Shell命令

④【多文件分屏命令】

操作 功能 :vs file.c 垂直分屏编辑文件 Ctrl + ww 切换分屏窗口 :sp file.c 水平分屏(需手动配置支持)

⑤【批量注释命令技巧】

  1. 添加注释

    • Ctrl + v 进入块选择模式
    • 方向键选择行范围
    • Shift + i 输入 //Esc 应用
  2. 删除注释

    • 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 头文件展开/宏替换/去注释 .i gcc -E test.c -o test.i 编译 -S 生成汇编代码 .s gcc -S test.i -o test.s 汇编 -c 生成二进制目标文件 .o gcc -c test.s -o test.o 链接 无 合并符号表/链接库 可执行文件 gcc test.o -o app

记忆技巧

  • 选项顺序 -E-S-c 对应键盘 ESc
  • 文件后缀 .i.s.o 组成 iso

②【编译选项】

选项 功能 示例 -o 目标文件 指定输出文件名 gcc test.c -o myapp -static 强制静态链接 gcc test.c -static -o app -g 添加调试信息(GDB 必备) gcc -g test.c -o debug_app -O2 优化级别(0无优化,3最高) gcc -O2 test.c -o fast_app -l库名 链接指定库(如数学库 -lmgcc calc.c -lm -o calc

③【静动态库】

1. 库文件位置

类型 头文件位置 库文件位置 标准库 /usr/include /lib/usr/lib 第三方库 /usr/local/include /usr/local/lib

2. 动态库(共享库)

  • 特征
    • 文件名: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, clean 依赖 生成目标所需的输入文件 main.o, utils.c 命令 执行动作的 Shell 命令 gcc -c main.c

关键特性

  • 基于时间戳的智能编译(仅重新编译修改过的文件)
  • 使用 touch 命令可强制触发重新编译

②【变量系统详解】

变量类型 语法 特性 延时变量 VAR = value 使用时才展开 条件赋值 VAR ?= value 仅首次定义有效 立即变量 VAR := value 定义时立即展开 追加变量 VAR += 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 add 添加改动到暂存区 创建 Blob 并更新索引文件 git commit 提交到本地仓库 生成 Commit 对象链接历史 git log 查看提交历史 遍历 Commit 对象链表 git status 检查工作区/暂存区状态 对比工作区、暂存区和 HEAD 差异

②【远程协作三剑客~】

命令 作用 分解动作 git clone 克隆远程仓库 下载所有对象 + 创建本地分支 git pull 拉取远程更新 git fetch + git merge git push 推送本地提交 上传本地对象 + 更新远程引用

六、gdb/cgdb调试器

①【安装与启动】

1. 安装(Debian/Ubuntu)

sudo yum install cgdb # CentOSsudo apt install cgdb # Ubuntu

2. 启动调试

cgdb ./test.exe # 调试可执行文件

启动后界面分为两部分:
【Linux】基础开发工具指令汇总(yum/apt、Vim、gcc/g++、Makefile、Git、gdb/cgdb)


②【核心操作速查表】

1. 模式切换

按键 功能 说明 Esc 进入代码窗口 可浏览/操作代码 i 进入命令窗口 执行 GDB 命令

2. 代码窗口操作(Esc 模式)

快捷键 功能 空格键 设置/取消断点(行号变红) j / k 向下/向上移动光标 o 打开其他文件 / 向下搜索代码 ? 向上搜索代码 n 跳转到下一个搜索结果 + 扩大代码窗口 - 缩小代码窗口 gg 跳转到文件开头 G 跳转到文件末尾 Ctrl + b 向上翻页 Ctrl + f 向下翻页

3. 命令窗口操作(i 模式)

  • 支持所有 GDB 命令:
 b main # 在 main 函数设断点 r  # 运行程序 s  # 单步进入(Step into) n  # 单步跳过(Step over) p variable # 打印变量值

中华生活网招商加盟