linux:常用工具 yum vim git gbd

Posted on 2024-05-25 20:31  玄灵镜  阅读(30)  评论(0编辑  收藏  举报

  linux操作系统如果最小化安装是很难使用的,所以需要很多工具进行扩展,这些扩展网上有很多,同时也是给了用户很多选择,但是并不是所有的程序都是可靠的,安卓和windows都是需要去有官方认证的平台下载安全的应用使用,而linux也是有不同的发行版本的团队整理的可靠的安装包使用,一般都是部署在服务器上供用户下载安装,linux的centos发行版中的yum程序可以当作一个应用商店来安装用户需要的程序.

  yum:yum可以手动去国内的镜像下载整个安装整合包的镜像iso文件,在系统中配置好路径,然后当作光盘挂载,后编辑repo配置文件来本地创建仓库,也可以直接去系统配置中在路径一栏中配置各大互联网厂商的云镜像文件,在需要用的时候直接拉取.这样就配置好了.yum的另一个好处是他会自己检测并解决安装跑的依赖问题,因为有些程序想要运行必须在系统中有一些语言环境的依赖,而yum会自己解决重重复杂的依赖,省的用户去一个一个处理.如下是不同的yum源,在使用yum install +name命令安装时会检索下面所有yum源寻找目标程序自动完成安装.

  

 这是一个本地的repo文件的具体内容:主要是baseurl这一栏表示yum源的地址,图中是本人配置的适用于centos7.9的本地文件包.

   vim:vim是linux中最经典的文本编辑器,切他的可扩展性很强,在使用vim+filename后会进入命令模式,vim中有三个主要模式:命令模式,插入模式,低行模式:

命令模式就是vim刚刚进入时的默认模式,该模式下可以批量编辑文本例如dd剪切光标所在的一行文本,yy:复制光标所在的一行文本,前面加n表示多行处理,p:粘贴复制的内容,$:将光标定位至行末,^:将光标定位至行首,gg:将光标定位至文本开头按i或o进入插入模式,插入模式就是普通的文本编辑,与windows下的记事本没有区别,按:进入低行模式:用于退出,或者使用正则表达式对文本进行查找搜索功能,低行模式下 wq表示保存退出 q!表示强制退出.

  vim也是支持扩展的例如可以配置的向vscode编辑器那样有关键字提示功能,高亮功能,以及自动缩进代码功能.这些可以去git下下载合适的.vimrc文件放在用户的家目录下,自动配置.

  gcc/g++:g++作为linux下的c或者C++语言编辑器,用于编译运行C加加语言代码,他分别可以通过加E或者s或者c选项对c文件进行预处理,编译汇编链接,形成可执行程序.一个c文件要变成可执行程序,需要经过预处理,编译,汇编,链接,预处理就是展开头文件,去注释,条件编译.

编译:将C语言形成汇编代码,

汇编:将汇编代码变成机器码,

最后是链接系统库.

  c语言的链接包括动态链接和静态链接,我一个c程序被写好,编译链接时有两种链接模式,分别是动态链接,第二种是静态链接,动态链接表示在链接时指明动态库的位置,当程序运行时,需要用到一些库函数时,需要去到系统库中直接调用,这样的好处是文件小,且代码的重复利用率高,缺点是时间长,需要跑到系统中调用一次,并且库改动时可执行程序可能会受到影响

  而静态链接在链接时直接将需要用到的库打包进可执行程序中,这样的优点是调包时间短且不受系统库改变的影响,缺点是体积太大了,如果每个程序都使用静态连接,那么这个库代码的冗余性将会变得非常大,再使用g加加编译文件时,系统默认使用的是动态连接,如果需要静态连接,可以在g++ name -o outname -static选项栏选择使用静态连接的方式连接.

  Linux中的命令行也可以直接运行一些解释性语言,例如python语言,shell脚本,只不过在运行这些解释性语言构成的文本是需要在第一行 写#!path声明解释器的位置.

如下图:一个python文件可以使用./name.py直接在命令行运行.首行加解释器的路径.

   Makefile/make:我们有注意到,当在我们使用第三方库或者应用时,常常需要使用的make命令来编译这些文件,这个命令就是自动化编译,具体的使用方式是写一个makefile文件,将项目中的各个需要编译的文件以及需要加的选项信息写入makefile文件,保存以后使用make命令便可以直接运行makefile里面所有的语句

   如上图,绿色字体依赖于后面的文件,而.PHONE后面表示一个伪目标,使用make会默认执行makefile文件中第一个目标,而第一个目标需要依赖于后面的TCPserver和TCPclient,而这两个目标又依赖于tcpclient.cpp和TCPserver.cpp,而当前目录下存在被依赖的这两个文件,于是会执行下面的g++语句,其中$@表示需要输出的文件,文件名而$^表示后面被依赖的文件.

  使用Makefile还有一个优点就是他会选择性的编译已经被改动过的文件,通过比较已经编译过的可执行文件和没有被编译的文件的修改时间来决定这个文件是否需要被编译,因为在一些大型项目中,编译整套项目是非常费时间的,所以选择性的编译变得尤为重要.

  git:git是一个版本控制软件,他可以选择性的获取到不同时期的文件版本,这个不同时期是需要用户手动提交的,国内用的是gitee,在电脑上写的一些代码可以保存到gitee,创建一个git仓库,推荐使用在WINDOWS下的gitee上初始化仓库,再去linux中使用git clone+gitpath来拉取仓库到本地.

  使用git时,使用git Add 加+需要保存的文件路径,将工作的文件保存,然后使用git commit -m加日志信息,将本阶段的数据提交到本地仓库中,每提交一次commit,在git中就表示一次不同的版本,若要上传到云端,则使用git push将本地的数据同步到远端,这样子就可以简单的使用git了,使用git Statues命令表示可以查看工作区的状态,比较本次git仓库与上次提交时间有哪些新建文件或者修改的文件.

  git默认有一个master分支,使用git statue可以查看当前处于哪个分支中,使用git branch -v可以查看分支,使用git branch+分支名可以创建分支,使用git checkout+分支名来切换不同的分支,一般的一个项目由多个人协作完成,往往会出现本地和云端不一致问题导致无法git push,所以首先在git push之前使用git pull将本地代码与远端同步,再通过git push就可以成功将文件保存到远端了.

  如下图可以看到当前位于master分支中.

   gdb:与VS相似,Linux中也有一个C加加程序运行的调试工具,WINDOWS中图形化界面的调试方式很方便,但gdb是一个命令行型的调试工具,在安装gbd后使用gdb加可执行程序名就可以进入调试界面,这里需要注意的是,进入gdb后,我们可能发现并没有调试信息,因为在WINDOWS下的VS编译器中,用户可以选择debug或者release两种编译方式,我们可以通过查看这两种编译方式之后形成的可执行程序的大小发现它们的大小并不相同,Debug中的可执行程序要大一点,因为debug中存在着程序的调试信息,而g++编译器使用默认编译的方式是release,因此不会输出调试信息,所以在编译时需要在g++命令的后面加上  -g 选项来时程序变成调试的状态,再用gbd来加可实现程序便可以调试程序.

  首先是用dbd+filename进入gdb,输入l也就是list来打印程序的代码信息,使用b+num来给指定行加断点,使用info+b来查看断点,使用d+断点编号来删除断点,这里需要注意的是,打断点的编号是行号,而去掉断点的编号是断点的编号,使用r(run)来开始调试,在VS调试过程中,是由逐过程和逐语句的,在gdb中也有这样的方式,逐语句表示:在调试到某一步后,遇到函数之后进入函数一步一步的走.而逐过程则是走到一个包含一个函数的一行代码直接运行完整个函数,然后调到下一行,使用c来直接运行到下一个断点处,s表示逐语句跳下一步,n表示逐过程跳下一步,s也就是step,n也就是next,如果只想执行完一个函数,从函数中跳出来,则使用finish来完成一个函数,在WINDOWS中,我们可以在监视窗口中输入变量名来时刻监视变量的变化。而在gdb中,这样的方式是不容易实现的,所以我们使用p加变量名来查看当前调试过程中变量的值,但是使用p加变量名也不是很方便,所以我们可以使用display+某个变量来使这个变量常显示,使用undisplay来取消常显示,是用until+num表示直接跳到某一行运行.

Copyright © 2024 玄灵镜
Powered by .NET 9.0 on Kubernetes