一.软件安装的两种方式1.源码安装(极其不推荐)在Linux下安装软件,⼀个通常的办法是下载到程序的源代码,并进⾏编译,得到可执⾏程序。但是版本兼容编译代码都会有很多问题这种办法不推荐。2.软件包推荐的安装方式但是这样太⿇烦了,于是有些⼈把⼀些常⽤的软件提前编译好,做成软件包(可以理解成windows上 的安装程序)放在⼀个服务器上,通过包管理器可以很⽅便的获取到这个编译好的软件包,直接进⾏安 装.软件包和包管理器的关系就可以看作软件和应用市场的关系。yum(YellowdogUpdater,Modified)是Linux下⾮常常⽤的⼀种包管理器.主要应⽤在Fedora, RedHat, Centos等发⾏版上.Ubuntu主要使⽤aptAdvancedPackageTool作为其包管理器。apt同样提供了⾃动解决依 赖关系、下载和安装软件包的功能。我们推荐使用包管理器去安装软件。在弄清为什么之前我们要先明白一个概念——软件依赖。一个软件能够跑起来背后并不是只有这个软件本身支持的还依赖其他的软件或库。而包管理器有个优势——自动解决软件依赖问题。在用包管理器安装软件时会自动去查找支持软件运行的其他软件或库是否已安装如果没有安装就会在安装软件本身的同时也将相关的其他软件或库也一并安装上。二.操作系统好坏的评估标准——生态三.为何有人会在免费社区开源软件甚至提供服务器供你下载天下没有免费的午餐那这些开发者为啥个个像慈善家一样去贡献自己的劳动成果原因在于开源也算是一种商业模式。在足够多的用户或厂商对某个开源软件形成依赖后为了防止开发者因恰不上饭而终止该软件的开发维护等进而损害到软件使用者的利益就会给其开发者带来利益支持包括但不局限于捐钱捐服务器等。四.下载流程与镜像下载的整个流程下载不是要链接吗那个人的云服务器是怎样找到链接的答案是服务器内置链接:www.centos.org。镜像但由于这玩意的服务器在国外国内没法访问这时就有厂商会定期将外网的那套生态拷贝一份并更改下载链接(切换镜像源)这就是镜像。然后国内下载就会走镜像这条路而非直接上官网。五.安装软件(Ubuntu环境下)——工具apt的具体操作安装apt intall 软件(文件)名卸载apt remove 软件(文件)名删除与安装的示例:sl的执行结果挺有意思的:查找apt下某个软件aptlist软件名 | grep六.linux编辑器——vim1.啥是编辑器编辑器 专门用来编辑文字、代码、文本文件 的软件核心功能打字、修改、保存文本。2.与vim简单一见①.输入vim回车即可进入vim②.进入后想退出Ⅰ.冒号q记住:冒号 wq是保存并退出。写完代码退出vim时要用wq,不然会报未保存的错误。Ⅱ.按两下大写Z并按回车。③.利用vim写源代码先创建.c文件随后输入vim 文件名.c用vim打开code.c便能编写代码。但是未经配置的vim还是比较鸡肋的它没有任何报错代码补全就相当于是一个记事本。写完代码后按shift冒号然后输入wq并回车便能做到保存并退出。然后输入gcc 文件名.c进行编译输入./a.out运行代码。3.vim的多模式如果我说上面能在vim里输入东西都算是巧合你信吗doge当笔者第一次在vim输入的时候除了发出叮叮的警告其他啥都没有然后退出vim也输不进去东西。这是由于vim是一款多模式编辑器此刻的vim处在命令模式里该模式是初入vim时默认的模式。而想要编写代码需要切换到另一个模式——插入模式。如何切换呢只需要按一个i并回车就行。当窗口左下角出现一个insert时就说明进入了插入模式就能正常编写代码。但编写完要在何处输入指令退出呢答案是按Esc键回退到命令模式然后输入shift冒号qw退出。但是这个shift冒号是个啥玩意呢它是切换到底行模式的指令。是的并不能在命令模式下退出而是要切换到底行模式才可以。底行模式下几个指令q:退出vimw:保存wq:保存并退出set nu:显示行号set nonu:取消显示行号q!/w!:强制退出/保存shift zz,即两个Z:强制退出!gcc 文件名.c:对文件的代码进行编译!ls -al:编译通过后使用该指令就可以生成a.out文件!./a.out:执行a.out文件里的代码%s/dst/src:用后者替换前者。vs 另一个文件文件名.c:分屏ctrlww:将光标从分屏的一个文件跳到另一个文件。命令模式下几个指令命令模式便于我们快速编辑。关于光标的指令gg:光标快速回到第一行。shift g,即G:光标快速到结尾。n shift g,即n G:光标快速定位到第n行。shift $:光标定位到当前行结尾。shift ^:光标定位到当前行开头。page Up/Dn/Home/End;k,j,h,l:光标上下左右移动。w:以单词为单位向后移动。b:以单词为单位向前移动。w/b前面也能带上数字表示向前/后移动n个单词。编辑指令yy:复制当前行。p:在光标所在位置下一行粘贴当前行的内容。yy/p依旧能在前面加n表示复制自当前行开始(包括当前行)向下/粘贴当前行内容 n行。u:撤销当前指令。ctrlr:撤销u指令。dd:可配合p使用就叫剪切即将当前行剪掉并复制到某一行。单独使用就叫删除。dd还是能带n表示将当前行及其以下共计n行的内容剪切/删除。p在这里带n表示将剪切的内容重复粘贴n次。x:删除当前行光标所在位置的字符如果一直按着x,会将该行所有内容往前推并不断删除光标处的内容直至删除该行所有内容。(向后删)x前带n就是删掉光标处及其后面共计n个字符。shiftx,即X:光标右侧不动左侧删除。(向前删)X前带n就是删掉光标以及光标前共计n个字符。r目标字符:将光标所在处字符替换成目标新字符要是字符跟原来的相同就会将大写的换成小写小写的换成大写。nr目标字符:将光标处以及后面共计n个字符替换成目标字符。shift~:将光标处小写字符换成大写大写换成小写对除字母外字符无视一直按着不放可以光标后移批量切换大小写。shift#选中单词选中后按n可对该单词进行逆向查找。注意:退出后再进入文件进行撤销会出现这个警告:替换模式shiftr进入Esc退出至命令模式。进入后可对光标所在行进行批量的替换覆盖操作。视图模式——常用功能——批量注释ctrlv进入视图模式Esc退回命令模式。用hjkl键选定区域。操作顺序①.选定要批量注释的区域用jk键上下选定要批量注释的几行。还可以用上面关于光标的指令例如shift g,即G选定当前光标到结尾的所有行。gg,选定当前光标到开头的所有行。②.按shifti即I进入插入模式在插入模式输入//(.c/.c的注释是“//”)“#”(makefile的注释是“#”)。③.再按Esc退回命令模式即可实现批量注释。如何取消批量注释先ctrlv进入视图模式再用hjkl去选中//区域最后按d进行删除注释符号。4.vim新文件文件名.c——创建该新文件并打开此时会有这样一个标识。此时进入底行模式用wq保存并退出这个文件就被创建了,可以在目录下看到这个新创建的文件:总结一下:5.使用vim的小技巧①.vim src n打开文件并定位到第n行。②.!v执行最近一条指令。6.vim配置之.vimrc文件配置vim会在当前家目录里去搜寻.vimrc这个配置文件如果有这个文件vim就使用这个文件里的配置项如果没有就使用默认的配置。配置流程:①.在家目录下创建并打开配置文件.vimrc。②.在文件里添加配置项这些文件配置项在网上都有搜一下复制进.vimrc文件就行了。但在.vimrc文件配置只能满足一些简单配置像是自动补齐自动查找还得用插件式的配置。7.vim配置之插件配置(一键化部署方案)下载链接git clone https://gitee.com/cappuccino-ltx/myvim.git ~/.myvim cd ~/.myvim chmod x install ./install①.在sudo前提下复制这段链接进终端②.输入密码如果密码输入错误就输入指令bash install,然后重新输入密码最终安装完,vim长这个样子,具有自动补全提示等vs2022里的功能下面的代码可以忽略不计:注意:1.不能在root用户下使用这个下载链接不然系统会出问题只能在普通用户下跑2.该下载链接仅支持ubuntu!!3.普通用户下载需要用sudo来提升权限注意将该用户添加进白名单。4.一旦安装有问题需要先rm掉myvim这个文件然后重新复制上面链接进行安装。5.需要回退到家目录下进行安装。8.历史遗留问题——sudo添加用户进白名单①.在root用户下用vim打开sudoers文件普通用户打开文件什么都看不到进来以后是这个样子:②.定位到# User privilege specification这一行进行如下修改:最后wq!强制保存并退出。七.Linux编译器——gcc/g1.gcc编译的四个步骤注意:-ESc为选项.iso为临时文件的后缀gcc常用选项程序需要有下面这四个步骤才能运行(形成可执行程序):①.预处理Ⅰ.作用进⾏宏替换/去注释/条件编译/头⽂件展开等。预处理完以后处理好的代码会装在code.i里。经过预处理的code.i就是一个纯净的,经过处理的c语言文件。Ⅱ.进行预处理的指令gcc -E code.c -o code.i-E选项:gcc预处理完成以后停止编译过程。-o选项:指目标文件该选项后跟目标文件。vim test.i:可以看到程序从几步的代码被处理成了几百行的代码:②.编译Ⅰ.作用gcc⾸先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的⼯作, 在检查⽆误后,将code.i文件里的代码翻译成汇编语言然后生成的汇编代码装在文件code.s里。Ⅱ.指令gcc -S code.i -o code.s-S:该选项告诉编译器从现在开始进行翻译编译这步做完以后就停止整个编译过程。vim test.s:可看到程序已然被翻译成了汇编语言。③.汇编Ⅰ.作用将汇编语言转化为机器能够识别的二进制code.s里的汇编语言经处理后形成的二进制内容会被装到code.o文件里。code.o文件是一个二进制文件完成汇编以后code.o还无法被执行因为.c文件被转成二进制的只有自己写的代码而像printf等的库函数的实现并没有被转成二进制所以想要文件可执行还得经过下面的第④步——将code.o文件与库文件进行链接最后生成一个可执行程序——code。Ⅱ.指令gcc -c code.s -o code.o-c选项:开始翻译汇编完成就停下来。vim test.o:文件里全是乱码可说明test.s里的汇编语言已经被转成了二进制。④.链接Ⅰ.作用将code.o文件与库文件链接起来进而生成可执行程序——code。Ⅱ.指令gcc code.o -o code./code指令:执行程序./test:看一下执行结果编译从.c到.o一步到位的指令gcc -o 可执行程序名 依赖的源文件依赖请参见笔者Linux基础工具之make/makefile这篇文章。2.何谓条件编译①.定义根据宏选择性编译一部分代码其他代码直接丢弃不参与编译。就像下面这个例子:如果定义了宏M,就会编译免费版这一句代码其余的统统丢弃。②.那么条件编译有何用途呢3.动静态库(重点)①.什么是库库有一套自己的命名规则:lib库的真实名.后缀其中.so后缀是动态库.a后缀是静态库②.动态链接与静态链接动态链接:动态库(libc.so)是个共享库被多个程序共享一旦缺失会导致所有程序无法执行。静态链接:对比:③.关于动态库