Linux 常用工具

目录

常用工具

vim 编辑器

gcc 编译器

gdp 调试器

断点相关

函数调用栈

git:项目版本管理工具


常用工具

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 是回车作用---->将输出起始位置移动到行首

 

 

 

 

 

你可能感兴趣的:(Linux 常用工具)