目录
常用工具
yum 工具
编辑器
编译器 gcc c++
调试器
makefile 项目构建工具
工具
yum :软件包管理工具(一条龙服务)
查看软件包
yum list
安装软件包
yum install
移除软件包
yum remove
vim 编辑器
vim默认不能使用鼠标
vim将操作分了很多模式:12种
常用的三种:
插入模式 插入数据
普通模式 完成命令操作(移动光标 复制粘贴删除撤销
底行模式 保存文件 推出编辑
模式切换
i 切换到插入模式
esc 回到普通模式
: 回到底行模式
普通模式 —— 插入模式
i 从光标所在位置开始输入 l 光标移动到行首,开始插入
a 光标移动到下一个字符处开始查入
A 光标移动到行尾开始插入
o 在光标所在行下一行新建添加新行开始插入
O 上方
插入模式 —— 普通模式
ESC
普通模式 —— 底行模式
: /
底行模式 —— 普通模式
esc
底行模式下的操作:
普通模式下的操作
光标移动
hjkl 左上下右
ctrl F 上翻页 ctrl B 下翻页 gg 头 G 尾
复制
yy 复制光标所在行
3yy 三行
粘贴
p 向上粘贴
P 向上粘贴
删除:剪切
x 一次删除一个字符
dw 删除单词
D 删除当前行光标以后字符
dd 删除光标所在行
3dd
撤销
u
回复撤销:
CTRL+ R
gcc 编译器
编译成机器可以的语言
预处理: 去掉注释,展开代码。
编译: 语法予以纠错,将代码解释称汇编代码。(报错阶段
汇编: 将汇编代码解释成机器语言
链接: 链接库文件中的代码
静态链接:链接静态库 (拷贝一份静态库,程序大
多个程序用同一份静态库,资源浪费大
动态链接:链接动态库 (程序小,依赖动态库的存在
gcc默认动态链接
gcc常用选项
-E 只进行预处理 -S 只进行编译 -c 只进行汇编
-o 用于指定生成的文件名称
-static 静态链接库
gdp 调试器
gcc默认生成release版本 无法实现逐步调试
gcc -g 加调试符
!gcc 运行最近一次gcc命令
bt
向程序中加入调试符号信息
加载程序 gdp 地址
gdb 【gdb加载程序的时候如果有参数不能加载的时候给予,应该运行时
1.gdp./文件名
2.开始调试
run 直接运行代码 start 开始逐步调试
3.常见操作
list 查看代码 n 下一步 不跟踪进入函数 直接将函数运行完毕
list file:line s 下一步 跟踪进入函数
b 文件名:行数 在第多少行打断点
p 变量 打印一个变量内容
断点相关
break 打断点 info 查看调试信息
printf 查看变量内容
break file:line 给文件打断点
c / continue 运行到下一个断点的地方
info break 查看断点信息
delete 删除断点
watch 变量名称 变量监控:变量内容改变就会停下来
函数调用栈
backtrace / bt 查看函数调用栈,快速定位错误
项目工具
make / makefile 项目自动化构建工具
makefile
普通文本文件,但是makefile中记录的是项目的构建流程规则
make
一个程序--makefile解释器,解释makefile中项目的构建规则,完成项目的构建,
makefile编写规则
目标对象【依赖对象】
tab 要执行的命令
make 的解释规则
make 在 makefile 中寻找第一个目标对象名称
目标对象名称不存在:报错推出
目标对象名称存在:检测是否有依赖对象
目标对象文件若存在:判断是否有依赖对象名称
有依赖对象名称:认为目标对象已生成,不需要重新生成
没有依赖对象名称:判断依赖对象文件是否存在
存在:判断目标对象文件与依赖对象文件的时间关系
不存在:在makefile继续向下查找依赖对象的生成规则,依赖对象在下一条规则中作为目标对象被生成,进而生成第一个目标对象后退出
目标对象文件不存在:直接执行命令生成
wildcard 获取所有文件名
patsubst 文件名替换 将所有.c 替换为.o
makefile预定义变量 $^ $@ $<
$^ 所有依赖对象
$@ 目标对象
$< 依赖对象中的第一个
伪对象:不管对象是否最新,是否存在,每次都需要为对象执行生成命令
git:项目版本管理工具
彩蛋:
git svn
git 基本操作
下载服务器上的代码 :git clone https_addr
本地提交 :git push origin
服务器分支提交 :git push origin master
进度条程序:
缓冲区
printf("hello\n");------>buffer------>file
printf 不会将文件直接写入终端显示文件,而是将数据先写入一个缓冲区(标准输出缓冲区)----- 目的是提高写入效率(将碎片化的文件集中写入文件)
printf 中的 \n 具有刷新缓冲区(将数据写入文件)的作用,主要作用还是换行
printf 中的 \r 是回车作用---->将输出起始位置移动到行首