网站推广策划方案,dedecms与wordpress,想学app开发哪里有培训班,0基础建设网站前言#xff1a;
这篇文章我们将讲述Linux的基本开发工具#xff0c;以及讨论Linux的生态圈#xff0c;最后再了解vim开发工具。
Yum#xff1a; YUM#xff08;Yellowdog Updater Modified#xff09;是一个在Linux系统中用于管理软件包的工具#xff0c;特别是在基于…前言
这篇文章我们将讲述Linux的基本开发工具以及讨论Linux的生态圈最后再了解vim开发工具。
Yum YUMYellowdog Updater Modified是一个在Linux系统中用于管理软件包的工具特别是在基于RPMRed Hat Package Manager格式的发行版上如Red Hat Enterprise Linux、CentOS和Fedora等。YUM允许用户轻松安装、更新和删除软件包并自动处理依赖关系。 在Linux下安装软件的方法 使用包管理器进行安装--yum 如上图我们使用 yum install tree 命令就下载了一个tree命令通过执行tree命令可以像树形结构一样展示目录和目录下的文件。 总所周知我们手机上想要下载一个应用程序就要去应用商店里下载但本质上是去远端服务器上搜索搜索到了才下载安装。在Linux的yum也是同理。 那么这里就会有疑惑软件包是什么是代码吗那这些软件包是哪里来的 软件包是一个包含软件程序及其相关文件和资源的集合通常用于简化软件的安装、管理和分发。软件包可以包含可执行文件、库文件、配置文件等也就是代码。那么软件包的由来其实是工程师上传的那么工程师为什么要免费上传这些软件包呢这就不得不提到生态。 生态 生态是指生物体与其环境之间相互作用的系统包括生物如动物、植物、微生物与非生物环境如水、空气、土壤的相互关系。那么在Linux操作系统中也同样存在这生态圈。 对于不同操作系统有着不同系统的生态圈它们拥有者不同的社区群体软件体系、官方文档而操作系统仅仅只是操作系统生态圈的一部分。比如centos是属于企业使用较多所以它针对的用户与社区论坛基本都是工程师。而这其中不乏很多大佬他们不缺物质上的需求并且也是希望生态圈越来越好所以会无偿贡献许多文档出现任何问题的解决方案以及许多软件包。 vim开发工具 Vim是一个高度可配置的文本编辑器广泛用于编程和日常文本编辑。它的设计理念强调高效的键盘操作特别适合需要频繁编辑文本的用户。 进入vim后我们可以像在VS一样编写C语言的代码并且也能运行起来。 vim的多模式
vim中有三种模式第一种是命令模式(最重要),第二中为插入模式(一般用于编写代码),第三种为低行模式。默认打开的模式是命令模式。 一开始进入vim模式是命令行模式键盘输入i就进入插入模式想要退回命令行就按esc如果一次没退出来就多按几次。 关于vim的快捷指令(命令行模式) 1.gg:光标定位到最开始 2.shiftg:光标定位到文件末尾 3.number(数字)shiftg光标定位到文件指定number行 4.shift键盘上方的数字键4($):定位到当前行的末尾 5.shift键盘上方的数字键6(^):定位到当前行的开头 6.h j k l :h(向左箭头) j(向下箭头)k(向上箭头)l(向右箭头) 这里要补充说明一下为什么明明键盘上有方向键却还是给予hjkl方向键属性。 上图是一款老式的键盘可以看到在当时的键盘是没有上下左右键的所以就在hjkl键位上赋予了方向键的属性而要知道我们操作系统这些都是需要向前兼容的所以自然而然的也保留了下来。 7.yy复制当前行 8.p:黏贴当前行到下一行 9.numberp重复黏贴number行 10.dd剪切或删除 11.numberdd:删除当前行以及剩下的number-1行 12.x:命令行模式下的删除 13.numberx命令行模式下删除numbe个数据 14.shift·~在当前光标位置进行字母大小写替换并自动移动到下一个字母 15.shiftr表示在当前光标位置进行代码替换到这一行结束 16.u:撤销之前的操作。 17.ctrlu:对u撤销的操作进行撤销 18.shiftzz保存并退出vim。 19.w让光标以单词为单位进行移动w移动到单词词尾。 20.b:让光标移动到单词词首
底行命令(在命令模式下输入shift:进入) w(保存)/q(退出vim)/set nu(显示行号)/wq(保存并退出)/!外部命令:如ls date Vim 会暂时离开编辑状态执行该命令然后将结果显示在 Vim 窗口中。 补充命令 1.批量化注释ctrlv进入视图模式hjkl(对光标进行任意的上下左右移动)-shitfi//esc 2.批量化去注释:ctrlv进入视图模式hjkld 在Linux中展开说说文件编译 在以前的学习我们知道一个c语言程序从编写代码到执行需要一个过程。1.得先预处理(进行宏替换/去掉注释/展开头文件/检查语法错误),2.编译(产生汇编指令),3.汇编(形成二进制指令)4链接(生成可执行文件在win下后缀为.exe,linux下为a.out)。而vs是一款集成开发环境很难观察到文件编译链接的过程。但在Linux中可以一步一步很清楚的观察到。 1.预处理 2.编译 3.汇编 4.链接 动静态库 动态库 动态库也称为共享库Shared Library在Linux 系统中通常以 libxxx.so 的文件名形式出现在 Windows 系统中为 xxx.dll。接下来我将以通俗易懂的图画来解释动态库的概念。 假设我是一段C语言代码今天是周末我有一系列任务需要完成。 首先我的主程序即我开始执行。我需要列出今天的任务并将它们按顺序执行。每个任务就是代码中的一段指令或功能而我将它们按计划逐一完成。我们可以把这个过程看作是“函数调用”每个任务代表一个独立的功能模块。 其中最关键的一步是“上网”这也是我唯一需要外部支持的部分。由于在学校里没有电脑无法直接访问网络资源因此我需要去附近的网吧可以看作是动态库来执行这一任务。这里的网吧是我调用的一个“外部库函数”它是动态加载的。在没有网吧的情况下我无法完成“上网”这一任务就像C语言中的函数调用依赖外部库一样。
上网过程 在网吧中我通过“调用”外部资源完成需要的工作例如查找信息、玩游戏等。这个过程类似于动态库函数被调用并执行期间可能会有一些中断、资源管理或异常处理等步骤。玩完电脑后我返回学校继续执行后续任务。
返回主程序 上网结束后我回到主程序中继续执行剩余的任务。这时我已经完成了一个“外部库函数”的调用返回到主程序继续按预定计划进行后续工作。就像C语言中的库函数调用返回主程序后控制权回到原先的代码执行流中一样。 通过这个比喻我可以清楚地理解如何将日常任务与编程结构结合起来。每一个任务都有它自己的依赖条件而有些任务则需要外部环境的支持正如程序在运行中需要调用外部的库函数一样。而我在执行这些任务时始终保持着“主程序”的地位不断根据计划继续执行。 如上图我们创建了创建了一个c语言的可执行程序通过ldd命令可以查看显示一个可执行文件或共享库依赖的共享库动态库列表。我们将查看到的 libc-2.17.so 这个文件。我们去掉前缀lib与后缀so那么就变成了c-2.17这就是一个c的标准动态库。 通过file命令我们还可以很明确的看到 dynamically linked 就是动态链接。 静态库 静态库在程序编译时就被链接到可执行文件中。当程序执行时库的代码已经嵌入到最终的可执行文件里不需要在运行时去加载库文件。 很显然静态库的特点就是直接把电脑搬到学校里也就不再需要直接去网吧里才能上网但将电脑搬入学校里这势必会占用内存空间。 gcc默认形成的可执行程序是动态链接如果需要静态链接则需要在链接后面加上 -static。
可以看到静态链接的程序会比动态链接内存大很多。 动静态库的优缺点 动态库优点共享占用内存小可以多个程序共用一个库 动态库缺点如果库文件丢失那么只要是使用了该库文件的程序全部会崩溃。 静态库优点不依赖外部文件如果库丢失照样能运行。 静态库缺点生成的可执行文件较大浪费空间。 自动化构建-make/Makefile 认识make与Makefile make 是一个用于自动化构建和管理项目的工具它特别适用于编译大型程序能够通过读取Makefile文件中的规则来确定如何编译和链接程序。 Makefile是一个描述构建规则的文本文件包含了项目中源代码文件之间的依赖关系以及如何从源代码生成目标文件的具体命令。make 工具通过解析 Makefile 中的规则来自动化构建过程避免了手动编译每个文件的繁琐操作。 简单来说make是一个指令Makefile是一个文件。 快速上手make/Makefile: 如上图创建了一个test.c的文件并使用vim添加了一些代码。接着我们touch了Makefile的文件并使用vim编辑它。保存退出后我们使用make命令后可以看到程序自动化构建了可执行文件。 Makefile的具体语法 第一行 mytest : test.c 我们将这一段代码成为依赖关系就好像确认关系应该mytest文件是依赖test.c文件的。 第二行 gcc test.c -o mytest 我们将这一段代码称之为依赖方法就比如确认关系后两个文件依赖这个关系做出的行为. 第四行.PHONYclean .PHONY是Makefile的语法表示clean并不会真正生成一个文件我们称之为伪目标并且依赖方法总是被执行。 如果我们多次调用mkae程序时并不会每次都产生可执行程序会说明可执行程序是最新的。这么做的原因也是防止浪费资源。除非我们再次对.c文件代码进行修改时再次make才会更新可执行程序。 通过ll命令我们发现clean文件并没有被创建但我们使用make clean的时候会直接调用clean所依赖的方法也就是删除可执行程序。 更加具有通用性的Makefile文件 ------那么本片文章到这就结束了感谢各位观看。