【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编辑器
①【三个模式间的切换】
i
a
o
Esc
Shift + ;
:
)②【命令模式的命令】
1. 光标移动
h/j/k/l
gg
G
(Shift+g)10G
$
^
w
b
2. 文本编辑
yy
3yy
p
3p
dd
3dd
x
X
u
Ctrl + r
~
(Shift+`)3. 高级功能
r
ra
替换为a)R
Shift + 3
n
③【底行模式的命令】
:w
:q
:wq
:q!
:set nu
:10
:/_keyword
:?_keyword
:vs _filename
:!ls
④【多文件分屏命令】
:vs file.c
Ctrl + 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
.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
gcc -g test.c -o debug_app
-O2
gcc -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/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
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
git commit
git log
git status
②【远程协作三剑客~】
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 # 调试可执行文件
启动后界面分为两部分:
②【核心操作速查表】
1. 模式切换
Esc
i
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 # 打印变量值