【1++的Linux】之基础开发工具

news/2025/3/15 5:00:26/

👍作者主页:进击的1++
🤩 专栏链接:【1++的Linux】

文章目录

  • 一,Linux软件包管理管理器
  • 二,Linux编辑器--vim
    • 2.1 什么是vim
    • 2.2 vim的基本操作
  • 三,gcc的使用
  • 四,gdb的使用
  • 五,项目自动化构建工具
  • 六,git三板斧

一,Linux软件包管理管理器

Linux软件包管理器相当于我们的应用商店一样,yum是Linux下一种常用的软件包管理器。
在介绍yum前我们再来认识一个工具rzsz,这个工具是用于windows与Linux机器间通过Xshell传输文件的,可通过拖拽的方式将文件上传至另一个机器。

需要注意的是在使用yum时必须保证你的机器网络通畅。
ping www.baidu.com 可以验证你的网络是否通畅。

当我们要查看软件包时可以通过yum list 罗列出当前所有的软件包。
例:
部分截图:
在这里插入图片描述

由于全部罗列出太多,为了方便我们寻找我们想要的通常会使用管道+grep命令来筛选出我们想要的。
例:
在这里插入图片描述
注意:

  1. 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  2. “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
  3. “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
  4. 最后一列,epel 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.

当我们想要安装软件时可通过命令sudo yum install 软件名称.
yum会自动找到需要下载的软件包,你只需输入y确定。安装完成后会有提示。
例:
由于我已经安装好了GCC,因此提示我已经安装过了。
在这里插入图片描述
注意:

  1. 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  2. yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.

学会了安装软件,那么如何卸载软件呢?
使用这条命令:sudo yum remove 软件名称
例:
在这里插入图片描述

二,Linux编辑器–vim

2.1 什么是vim

vim是一个多模式编辑器,常用的有三种模式:命令模式,插入模式,底行模式。
命令模式:控制屏幕光标的移动,字符的删除等。
插入模式:在这个模式中,我们才可以进行文字输入。
底行模式:文件的保存和退出,找字符,列出行号等操作。

2.2 vim的基本操作

  1. 进入vim:输入vim 文件名 ,进入vim后,处于命令模式。
  2. 命令模式切换为插入模式:输入a或i或o。
  3. 插入模式切换为命令模式:按Esc。
  4. 命令模式切换为底行模式:shift+;。
  5. 在底行模式中:w是保存文件;wq是保存并退出:q!是强制退出。

命令模式中的一些命令:
6. 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
7. 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
8. 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
9. vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
10. 按[shift+g]也就是G:进入文本末端
11. 按「#l」:在该行光标移#个位置,如:5l,56l
12. 按「 $ 」:移动到光标所在行的“行尾”
13. 按「^」:移动到光标所在行的“行首”
14. [x」:每按一次,删除光标所在位置的一个字符
15. 「dd」:删除光标所在行
16. 「#dd」:从光标所在行开始删除#行
17. 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
18.「#yw」:复制#个字到缓冲区
19.「yy」:复制光标所在行到缓冲区。
18. 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
19. 「r」:替换光标所在处的字符。
20. 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次。
21. 「ctrl」+「g」列出光标所在行的行号。

底行模式中的一些命令:
在使用末行模式之前,请记住先按「ESC」键确定您已经处于命令模式,再按「:」冒号即可进入底行模式
22. 「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。
23. 「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。

三,gcc的使用

在讲gcc前我们先来讲讲一段代码是如何运行的。

  1. 预处理阶段:在这个阶段主要进行的是宏替换,条件编译,去注释,文件包含等操作。
  2. 编译:编译的主要目的是生成汇编,在这个阶段还会检查语法的正确性。
  3. 汇编:在这个阶段会将汇编语言转换为二进制机器可识别代码。
  4. 链接:链接阶段会进行函数库的链接以及同一项目中的各文件间的链接。接下来我们再讲讲什么是函数库。
  5. 函数库:函数库分为静态库和动态库两种。

静态库:在编译链接时,库的文件代码全部 加载到可执行文件中,所以在运行时就不需要库文件了。
动态库:在编译链接时,没有把库代码加载到可执行文件中,而是在程序运行时链接文件加载库,且gcc默认使用的是动态链接。

gcc选项

-E 预处理 生成.i文件
-S 编译 生成.s文件
-c 汇编 生成.o文件
-o 链接 最终形成可执行文件
-static 静态链接
-g 生成调试信息,gcc默认生成的是release版本,因此要加-g才能生成debug版本。

例:
在这里插入图片描述

四,gdb的使用

要使用gdb进行调试,必须在源代码生成二进制可执行程序的时候加上-g选项。
gdb 常用命令:

  1. list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  2. list/l 函数名:列出某个函数的源代码。
  3. r或run:运行程序。
  4. n 或 next:单条执行。
  5. s或step:进入函数调用
  6. break(b) 行号:在某一行设置断点
  7. break 函数名:在某个函数开头设置断点
  8. info break :查看断点信息。
  9. finish:执行到当前函数返回,然后挺下来等待命令
  10. print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
  11. display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  12. delete breakpoints:删除所有断点
  13. delete breakpoints n:删除序号为n的断点

五,项目自动化构建工具

makefile带来的好处就是自动化编译,能够极大的提高软件开发效率。
make是一个命令工具,能够解释makefile中的指令。
要理解makefile我们先来理解依赖关系与依赖方法
看一个例子:
在这里插入图片描述

在这个makefile中test2.exe与test2.c之间具有依赖关系。并且test2.exe依赖test2.c。也就是说,有test2.exe的前提是必须有test2.c。gcc test2.c -o test2.exe 称做依赖方法,也就是说,test2.c 通过上述的方法才生成了test2.exe。

项目清理
当我们输入clean后,系统就会去makefile中查找clean目标,但是,若没有 .PHONY修饰,并且你的文件里有一个叫clean的,这时就会把你这个文件当做目标文件,因此在编译器眼里你就是最新的文件,不需要去执行依赖方法来生成了。有了。PHONY修饰后,就成了伪目标,伪目标的特点是总是要被执行,因此clean后的依赖方法就总是会执行。

六,git三板斧

git clone xxx 创建一个放代码的本地仓库

  1. git add 将代码上传到本地仓库中
  2. git commit 提交改动,日志到本地
  3. git push 同步到远端服务器上

http://www.ppmy.cn/news/815725.html

相关文章

python画老虎_Python数据结构:列表

列表的基本函数 range(3) #小于3的整数:0,1,2 range(1,10) #大于等于1小于10的整数,即[1,10) range(1,10,2)#大于等于1小于10的整数,步长为2,即1,3,5,7,9 lst1 [1,2,3,4] lst2 ["zhangsan","lisi","wang…

洛达悦虎1562M各个版本固件升级教程

​PS:固件升级有一定的风险,请大家谨慎升级,升级过程中出现问题后果自负。 下面介绍一下各个版本更新内容: ①2020年12月固件【35固件】 1、提升稳定性 ②2020年11月固件【32固件】 1.耳机连接手机状态中,摘下耳机通话自动切换为手…

angular4学习指南(二)路由

路由 1.创建一个带路由模块的项目:ng new project --routing 2.基本路由之头部导航栏的实现 实现的效果如下: 点击“首页”,页面跳转到首页 点击“新闻”,页面跳转到新闻页面。 要实现如上效果,我们需要使用到angular中…

《计算机组成原理》第四章储存系统 部分课后习题答案 清华大学出版_秦磊华_谭志虎

4.1 存取时间:又称为存储器的访问时间,是指启动一次存储器的操作(读或写分别对应存与取)到该操作完成所经历的时间。 存取周期:连续启动两次访问操作之间的最短时间间隔。 存储器带宽:单位时间内存储器所能传输的信息量,常用的单位包括位/秒或字节/秒。 存储单元:保存…

ip6服务器位置,ipv6地址一般设置多少_ipv6地址设置指南

IPv6(Internet Protocol Version 6)是IETF(互联网工程任务组)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。随着IPv4资源的急剧紧缺,相信在不久的未来,IPv6将成为最一代互联网地址的标准。与IPv4相比,IP…

《计算机组成原理》第五章指令系统 部分课后习题答案 清华大学出版_秦磊华_谭志虎

5.1 指令:控制计算机执行某种操作(如加、减、传送、转移等操作)的命令。 指令系统:一台计算机中所有指令的集合。 操作码:指令中用于控制指令操作性质的字段。 扩展地址码:将指令的操作码字段向不用的地址码字段扩展,从而在指令长度不变的情况下支持更多的指令。 地址…

计算机组成原理微课版(谭志虎主编)预习笔记

更新中 本专栏是博主在大学浪了近两年啥也没学后重学计算机专业时写的,方便个人学习和复习,本人菜鸟一枚,如有错误或能优化的地方欢迎指正,也特别欢迎交流学习。 motto共勉:心之所向,素履以往;…

python输出变量地址_Python——变量

笑虎:千行代码入门Python​zhuanlan.zhihu.com 函数的参数​www.liaoxuefeng.com Python学习之变量的作用域 - fireporsche - 博客园​www.cnblogs.com 1.Python数据类型: Python数据类型有两种:哈希类型、不可哈希类型,这是因为hash函数的结果和变量的地址有关。 哈希类型…