Linux 基础开发工具(yum、vim、gcc/g++、gdb)

目录

Linux 软件包管理器 —— yum

软件包的概念

使用yum

实现本地机器和云服务器的文件互传

Linux 编辑器 —— vim

vim命令模式命令大全

vim底行模式命令大全

配置vim

Linux 编译器 —— gcc/g++使用

执行编译的四个步骤(了解就好)

gcc选项

Linux 调试器 —— gdb使用

背景

release转换成debug

调试

命令汇总


Linux 软件包管理器 —— yum

软件包的概念

在Linux下安装软件,通常的办法是下载到程序的源代码,并进行编译,得到可执行程序

但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成Windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装

软件包和包管理器,就好比app和应用商店的关系

yum(Yellow dog Update,Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora,RedHat,Centos等发行版上。

使用yum

输入指令yum list,就可看到可以下载的全部软件(列表很长,就不截图了)

安装软件

输入指令 sudo yum install 软件名

yum会自动匹配到你想安装的软件并询问你是否需要下载,这时候按y确认安装,当末尾出现complete时,说明安装完成

实现本地机器和云服务器的文件互传

先安装lrzsz这个软件

 安装完后输入指令rz -E可选择可选择需要从本地机器上传的软件

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第1张图片

 而输入指令sz+文件名可将云服务器上的文件下载到本地机器指定的文件夹中

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第2张图片

Linux 编辑器 —— vim

vim:vim是解决在Linux上代码的编写的问题,本质是文本编辑器

特点:多模式的文本编辑器

这里先介绍vim主要的三种模式:命令模式、底行模式、插入模式

vim默认打开的时候所处的模式是命令模式

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第3张图片

命令模式切换成插入模式:

i:在当前光标处进入插入模式

a:在当前光标的后一个位置进入插入模式

o:在当前光标处的下一行进入插入模式

vim命令模式命令大全

移动光标

h:左移光标

j:下移光标

k:上移光标

l:右移光标

$:移动到光标所在行的行尾

^:移动到光标所在行的行首

gg:移动到文本开头

G:移动到文章的最后

n+shift+g:移动到第n行行首

w:光标跳到下个字开头

e:光标跳到下个字字尾

b:光标回到上个字开头

nl:光标移到该行的第n个位置

ctrl+b:屏幕往后移动一页

ctrl+f:屏幕往前移动一页

ctrl+u:屏幕往后移动半页

ctrl+d:屏幕往前移动半页

删除文字

x:每按一次,删除光标所在位置的一个字符

nx:删除光标所在位置的后面(包括自己)的n个字符

X:大写的X,每按一次,删除光标所在位置的前面一个字符

nX:删除光标所在位置的前面的n个字符

 dd:删除光标所在行

ndd:从光标所在行开始删除n行

复制

yw:将光标所在之处到字尾的字符复制到缓冲区中

nyw:复制n个字到缓冲区

yy:复制光标所在行到缓冲区

nyy:表示拷贝从光标所在的该行往下数的n行内容

p:将缓冲区内的字符贴到光标所在位置。注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能

替换 

r:替换光标所在处的字符

R:替换光标所到之处的字符,直到按下Esc键为止

撤销上一次操作

u:若误执行一个命令,可按u撤销该操作,恢复到上一个操作

ctrl + r:撤销的恢复

更改

cw:更改光标所在处的字到字尾处

c#w:表示更改#个字

跳至指定的行

ctrl+g:列出光标所在行的行号

nG:移动光标至文章的第n行行首

vim底行模式命令大全

在使用底行模式之前,请记住按Esc键确定你已处于正常模式,再按:冒号即可进入底行模式

列出行号

set nu:在文章的每一行前面列出行号

跳到文件中的某一行

#:#表示一个数字,在冒号后输入一个数字,再按回车就会跳到该行了

查找字符

/关键字:先按/键,再输入想寻找的字符,如果第一次找的关键字不是你想找的,可以一直按n会往后寻找到你要的关键字为止

?关键字:先按?键,再输入想寻找的字符,如果第一次找的关键字不是你想找的,可以一直按n会往前寻找到你要的关键字为止

保存文件

w:冒号后输入w可将文件保存

离开vim

q:按q就是退出,如果无法离开vim,可以在q后跟一个!强制离开vim

wq:保存并退出

配置vim

这里给大家一个非常方便的脚本,你想在哪个用户下配置vim就在哪个用户下敲这个脚本,按回车就会自动帮你安装啦!

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

功能齐全,亲测有效!

Linux 编译器 —— gcc/g++使用

执行编译的四个步骤(了解就好)

gcc是c的编译器,g++是c++的编译器,两者在执行编译时都会经过以下四个步骤

1.预处理(gcc -E):头文件展开,去注释,宏替换,条件编译

2.编译(-S):c代码编译成汇编

3.汇编(-c):将汇编语言翻译成为目标文件(可重定向目标文件)

4.链接:将汇编过程产生成的二进制代码进行链接

gcc选项

-E:只激活预处理,不生成文件,你需要将它重定向到一个文件中

-S:编译到汇编语言,不进行汇编和链接步骤

-c:编译到目标代码

-o:文件输出到文件,常用gcc 代码文件 -o 输出文件

-g:生成调试信息

-static:此选项对生成的文件采用静态链接

Linux 调试器 —— gdb使用

背景

首先我们要明白,程序发布的方式有两种,debug版本和release版本

debug:程序本身会被加入更多的调试信息,以便于进行调试。

release:不会添加任何的调试信息,不可被调试。

而Linux gcc/g++ 出来的二进制程序,默认时release版本

so,要使用gdb调试,得先转换成debug版本,所以必须在源代码生成二进制程序的时候,加上-g选项。

release转换成debug

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第4张图片

可以看到,mytest和mytest_g两者的大小有差别,所以mytest是默认生成的release版本的,mytest_g是debug版本的(因为加入了调试的信息,所以文件会变大)

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第5张图片

通过readelf指令和grep过滤后也可以验证我们的观点(readelf命令一般用于查看ELF格式的文件信息),mytest_g就是比mytest多出这些和debug有关的调试信息,所以mytest_g是debug版本的。

总结:Linux默认发布的可执行程序,是动态链接且release方式,可通过-static和-g选项来修改成静态链接和debug版本。

调试

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第6张图片

通过gdb mytest_g调试程序  

进入到gdb模式后,可以输入 list/l 指令显示源码(每次列10行,接着上次的位置往下列),或者想从第一行开始显示可以输入 l 1 指令。

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第7张图片

 通过run指令运行程序,输出结果

 打断点:b 行号

查看断点:info b

可以看到当前有一个断点在第2行 

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第8张图片

再打一个断点并查看 

Linux 基础开发工具(yum、vim、gcc/g++、gdb)_第9张图片

删除断点:d num 

命令汇总

list /(l 行号):显示源代码,每次列10行,接着上次的位置往下列

list /(l 函数名):列出某个函数的源代码

run/r:运行代码

b 行号:打断点

info b:查看断点

d Num(断点编号):删除断点

p 变量:打印变量值,也可以p &变量打印变量的地址

next/n:逐过程执行

step/s:逐语句执行

display 变量名:跟踪查看一个变量,每进行一步调试都会显示一次它的值

undisplay 跟踪变量名的编号:取消对先前设置的那些变量的跟踪

until x行号:跳至x行(忽略掉那些无效的代码的行)

finish:执行到当前函数的返回,然后停下来等待命令

continue/c:跳转到下一个断点

set var:修改变量的值

disable 断点编号:禁用断点

enable 断点编号:启用断点

bt:查看各级函数调用及参数

quit:退出gdb

你可能感兴趣的:(Linux,linux,shell,vim)