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

一、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

③【镜像源】

注意:操作需网络畅通,通过 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头文件展开/宏替换/去注释.igcc -E test.c -o test.i
编译-S生成汇编代码.sgcc -S test.i -o test.s
汇编-c生成二进制目标文件.ogcc -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)...
    <Tab>命令(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  # CentOS
sudo apt install cgdb  # Ubuntu

2. 启动调试

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

启动后界面分为两部分:
在这里插入图片描述


②【核心操作速查表】

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  # 打印变量值
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值