Linux第二节:开发工具全攻略--从编译调试到项目部署

一、Linux软件包管理利器 - yum

1.1 yum工作原理

yum作为RHEL系Linux的核心包管理器,采用C/S架构:

  • 本地存储元数据缓存
  • 自动解析依赖关系
  • 连接远程仓库获取软件包

常用命令示例:

命令 说明 示例
yum install 安装软件包 sudo yum install gcc
yum remove 删除软件包 sudo yum remove vim
yum update 更新软件包 sudo yum update
yum search 搜索软件包 yum search python3
yum list 列出可用包 yum list installed
yum info 查看包信息 yum info openssl
yum clean 清理缓存 yum clean all
yum repolist 查看仓库列表 yum repolist all

1.2 配置技巧

修改/etc/yum.repos.d/下的.repo文件:

ini 复制代码
[base]
name=CentOS-$releasever
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=1

二、高效代码编辑 - Vim终极配置

2.1 模式切换速查表

操作 命令模式 插入模式 底行模式
进入插入模式 i/a/o - -
返回命令模式 ESC ESC ESC
进入底行模式 : - -

命令模式 插入模式 底行模式 用户输入 模式判断 执行编辑操作 输入文本到缓冲区 执行扩展命令 刷新屏幕渲染

2.2 推荐.vimrc配置

vim 复制代码
" 基础设置
set nu                  " 显示行号
syntax on               " 语法高亮
set tabstop=4           " Tab宽度
set autoindent          " 自动缩进

" 插件管理(需安装Vundle)
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'preservim/nerdtree'
Plugin 'vim-airline/vim-airline'
call vundle#end()
filetype plugin indent on

2.3 常用的 vim 命令

命令模式 说明 示例
i 进入插入模式 -
:wq 保存并退出 -
/text 向下搜索文本 /main
:n 跳转到第n行 :15
dd 删除当前行 -
yy 复制当前行 -
p 粘贴 -
u 撤销操作 -
:set nu 显示行号 -
:%s/old/new/g 全局替换 :%s/foo/bar/g

三、GCC编译全过程解析

3.1 四阶段编译流程

预处理 编译 汇编 链接

各阶段示例:

bash 复制代码
# 预处理(生成.i文件)
gcc -E main.c -o main.i

# 生成汇编(.s文件)
gcc -S main.i -o main.s 

# 生成目标文件(.o)
gcc -c main.s -o main.o

# 静态链接
gcc main.o -static -o main_static

3.2 gcc 编译器常用命令

参数 说明 示例
-E 预处理阶段 gcc -E main.c -o main.i
-S 生成汇编代码 gcc -S main.i -o main.s
-c 生成目标文件 gcc -c main.s -o main.o
-o 指定输出文件 gcc main.o -o app
-g 包含调试信息 gcc -g test.c -o debug
-Wall 显示所有警告 gcc -Wall demo.c
-O2 优化级别2 gcc -O2 optimize.c
-static 静态链接 gcc -static hello.c
-I 指定头文件路径 gcc -I ./include src.c
-l 链接库文件 gcc -lm math.c

四、调试利器GDB实战

4.1 调试流程示例

调试段错误步骤:

bash 复制代码
# 编译带调试信息的程序
gcc -g segfault.c -o segfault

# 启动调试
gdb ./segfault

(gdb) break 15        # 在15行设置断点
(gdb) run             # 运行程序
(gdb) backtrace       # 查看调用栈
(gdb) print *ptr      # 检查指针值
(gdb) x/10x memory    # 查看内存区域

4.2 gdb 调试器常用命令

命令 说明 示例
gdb [exe] 启动调试 gdb ./demo
break(b) 设置断点 b 20 或 b main
run(r) 启动程序 -
next(n) 单步执行(不进入函数) -
step(s) 单步进入函数 -
print(p) 打印变量值 p count
backtrace(bt) 查看调用栈 -
list(l) 显示源代码 l 10-20
info locals 查看局部变量 -
continue(c) 继续执行到下一个断点 -
quit(q) 退出调试器 -

五、自动化构建 - Makefile精要

5.1 智能Makefile示例

makefile 复制代码
ProgressBar:main.c ProgressBar.c
	gcc -o ProgressBar main.c ProgressBar.c -DN=1
.PHONY:clean
clean:
	rm -f ProgressBar

5.2 Makefile常用命令

语法元素 说明 示例
target: dependencies 目标定义 app: main.o utils.o
$(CC) 预定义变量(编译器) CC = gcc
$@ 自动变量(目标文件) gcc -o $@ $^
$^ 自动变量(所有依赖) 同上
.PHONY 伪目标声明 .PHONY: clean
wildcard 文件匹配 SRC = $(wildcard *.c)
% 模式规则 %.o : %.c
-include 包含其他Makefile -include config.mk
ifeq 条件判断 ifeq ($(OS),Linux)
@ 隐藏命令回显 @echo "Compiling..."

六、实战:动态进度条程序

详见: 实验一、Linux环境下实现进度条小程序:深入解析核心实现与关键技术细节


七、Gitee代码管理速成

常用工作提交(gitee三板斧)

bash 复制代码
# 初始化仓库
git init

# 关联远程仓库
git remote add origin https://gitee.com/user/repo.git

# 典型提交流程
git add .
git commit -m "feat: add progress bar"
git push -u origin main

# 分支管理
git checkout -b dev
git merge dev
git branch -d dev

八、总结

掌握这些核心工具的使用,将帮助开发者构建完整的Linux开发能力体系。建议通过实际项目不断练习,逐步深入理解各工具的高级用法。收藏文章,可作为日常开发快速参考手册。

使用提示:

  1. yum操作需要sudo权限
  2. vim命令区分模式(命令模式/插入模式/底行模式)
  3. gcc编译流程:预处理 -> 编译 -> 汇编 -> 链接
  4. gdb调试需要带-g编译的程序
  5. Makefile缩进必须使用Tab键(不能是空格)

思维导图:
Linux开发知识体系 软件管理 代码编辑 编译系统 调试工具 项目构建 实战案例 进阶方向 yum核心功能 软件安装 依赖管理 仓库配置 Vim三模式 命令模式 插入模式 底行模式 高效配置 快捷键映射 插件体系 语法高亮 GCC编译流程 预处理 编译 汇编 链接 构建参数 调试信息 优化级别 静态链接 GDB核心功能 断点管理 执行控制 内存调试 调试技巧 段错误分析 多线程调试 性能分析 Makefile核心 目标依赖 自动变量 模式规则 构建策略 增量编译 多目录管理 条件编译 进度条实现 终端控制 动态刷新 时间统计 代码管理 Git工作流 分支策略 CI/CD 性能优化 性能分析 缓存优化 指令级优化 系统开发 内核模块 驱动开发 系统调用

相关推荐
wtblszn19 小时前
自动化包装生产线设备可视化管理方案
运维·自动化
跨境小彭21 小时前
Temu拉美站点铺货实操复盘:手动复制痛点与批量自动化解决方案
服务器·人工智能·搜索引擎·自动化·temu电商运营
心之语歌21 小时前
Tkinter 画布基本梳理
运维·服务器·python
Shulex21 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
bloglin999991 天前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣1 天前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP1 天前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技1 天前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
向成科技1 天前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人1 天前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados