【Linux】Linux下的常用工具解析(yum/vim/ gcc/g++ /gdb/make/Makefile/git)

常用工具

  • 一、 软件包管理工具yum
  • 二、个人编程工具
    • 文本编辑器 vim
    • 编译器 gcc/g++
    • 调试器 gdb
  • 三、 项目管理工具
    • 项目的自动化构建工具:make/Makefile
    • 项目的版本管理工具 git

一、 软件包管理工具yum

类似于手机上的应用商店,帮我们系统安装软件包
1.如何查看能够安装的软件包
yum list/search 默认去centos官方服务器去请求当前版本的centos能够安装的哪些软件包
yum list | grep vim 查看以vim开头的软件 grep过滤过滤掉其它的
查看已经被安装的软件包 : yum list installed
2.如何安装指定软件包
安装软件包是给系统安装应用,因此需要使用root用户 su root
yum install +软件包名称 例如: yum install vim (安装vim)
yum install lrzsz 主机与虚拟机之间的文件传输工具 rz从主机向虚拟机传输 sz从虚拟机向主机传输
lrzsz工具在xshell中用的,针对远程工具使用 从windows下可以拖一个文件
3.如何卸载安装的软件包
yum remove +软件包名称
附: vim --version(查看vim的版本)

二、个人编程工具

文本编辑器 vim

是命令行下的文本编辑工具,利用它我们可以在linux下写代码
默认不支持鼠标操作,并且默认没有windows下的常用快捷键
vim有多种不同的操作模式:不同操作模式下某个按键功能也有所不同 一共12中操作模式,常用的有3种:
插入模式:文本插入数据
低行模式:文本的保存及退出编辑 wq保存并退出
普通模式
完成文本内容的操作(复制/粘贴/删除) vim 打开一个文件后默认处于该模式
eg: vim test.c 打开test.c这个文件 test.c可以不存在,vim 可以可以直接默认创建并打开文件 可以不用touch 创建文件
光标移动

  • hjkl 左下上右键,
  • ctrl+f/b 向下/上翻页
  • G 直接调至文件末尾
  • gg返回文件首行
  • gg =G 全文对齐

复制:复制光标所在一行 yy nyy复制n行 比如 6yy复制6行
粘贴:

  • p 向光标所在行的下一行粘贴(光标移到哪,就复制到光标的下一行),原本的下一行就到下下一行了)
  • P 向上粘贴

剪切

  • dd 删除光标所在行(vim中没有真正的删除,复制就显示删除的)
  • ndd一次性剪切n行
  • x 删除光标所在字符
  • dw 从光标往后删除整个单词
  • u 撤销上一步操作
  • ctrl+r 反向撤销

模式之间的切换
普通->插入:

  • i (i从光标所在位置开始插入)
  • a 光标向后移动一个字符开始插入
  • o 在光标所在行下方添加新行开始插入
  • I/A/O

插入->普通

  • ESC键

普通->低行 :
不管在什么模式下切换到普通模式都可以使用 ESC
:help 查12种操作模式

编译器 gcc/g++

编译器也是一个软件(程序 )gcc是C语言的编译器,g++是C++语言的编译器
我们写的C语言代码不能被机器直接识别,因为C语言是一个高级语言,所写的代码不是机器能够识别的指令,因此需要编译器将高级语言所写的代码翻译成机器能够识别的指令集(二进制)
编译器将高级语言代码解释成为机器指令集所经过的过程:
1.预处理:
去注释、头文件展开、条件编译、宏替换(宏替换不做语法检查,在编译时检查)

 gcc -E test.c  -o test.i   (将test.c 生成 test.i可执行文件)  -E:预处理完就结束编译:将C语言翻译成汇编语言 

2.编译:将C语言程序解释成为汇编语言(进行代码语法语义纠错)

 gcc -S test.i   -o test.s  

3.汇编:将汇编语言翻译成二进制(现在的二进制是目标文件)

  gcc -c test.c  -o test.o     .o文件是目标文件 

4.链接 链接动静态库生成可执行文件 gcc默认使用的是动态链接,静态链接后面加-static

  gcc -o mytest test.c  // 以后直接一步就可以

动态链接:产生了关联 在Linux 中动态库以 .so结尾
编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。多个程序在内存中使用同一个库,内存中代码冗余比较小
静态链接:在windows 中静态库以 .lib结尾
编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,若干个程序都使用了同一个库,则会在内存中造成代码冗余,但在运行时也就不再需要库文件了
动态库

优点 缺点
动态库 体积小 ,冗余小 依赖库本身
静态库 不依赖第三方库 体积大 ,会造成代码冗余

调试器 gdb

它也是一个程序/软件 可以在调式程序运行的过程,便于找出程序中bug出现的位置
调试一个程序,这个程序必须包含有调试符号信息但linux下gcc编译器,默认生成release程序(发布版本,无法进行调试),所以想要调试程序,需要在gcc编译时使用-g选项生成debug版本程序 gcc -g test.c -o test
gdb调试实现原理:ptrace接口

gdb调试程序运行过程的命令 (gdb ./test 调试test.c,gdb -p pid调试运行中的程序)
开始调试命令:

  • run–直接运行程序
  • start–开始逐步调试(main函数的第一行)

流程相关命令:

  • list–查看当前调试行附近代码;
  • until 直接运行到指定行位置(until test.c:30 直接运行到test.c的30行)
  • next 下一步(一步步向后走,相当于vs的F11,遇到函数直接运行函数)
  • step 下一步 遇到函数直接进入函数
  • continue 继续运行,不再逐步调试

断点相关命令

  • break 打断点 (break test.c:24给test.c中第24行打断点)
  • info break 查看断点信息
  • delete break_id 删除断点 (delete 7删除7号断点)
  • watch 变量监控断电(watch i 监控i,数据改变则停下来)

其它命令:

  • 查看函数调用栈—>快速查看程序崩溃退出位置 backtrace
  • print 查看变量数据

三、 项目管理工具

项目的自动化构建工具:make/Makefile

项目的自动化构建项目
makefile是一个普通的文本文件,记录着一个项目的编译流程以及规则,
make–是makefile的解释器(程序),它找到makefile文件,按照流程执行makefile中的记录
makefile编写规则:

目标对象:依赖对象(通过依赖对象来生成目标对象)//依赖关系
(ta键) gcc -o 目标对象 依赖对象  //分别可以用$@ $^代替   依赖方法
//清除运行后的代码
.PHONY:clean //伪目标, 不管目标对象是否最新、是否存在,每次都需要重新生成
clean:
(tab键) rm -f 目标文件
//例如
test:test.c
  gcc -o $@ @^
.PHONY:clean
clean:
  rm -f test

项目的版本管理工具 git

这是一个对项目进行日志管理的工具。当你写一个项目时,写完了一个部分,再写其它的,然后发现新代码有问题,想要还原到之前的阶段,这样每个用户都可以再自己的主机上建立自己的项目版本仓库
从远程服务器克隆一个项目下来: get clone 地址//当你在本地写的不对时,想找之前的,就可以这样
做修改后,进行本地仓库版本管理:

  • git add ./*
  • git commit -m “备注信息”
  • git push origin master //将本地版本同步到远程服务器的master分支

你可能感兴趣的:(Linux)