做房产网站接不到电话,网站空间 流量,短网址转换长网址,做系统网站好Linux系统vim#xff0c;gcc#xff0c;g工具使用及环境配置#xff0c;动静态库的概念及使用 1. Linux编辑器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5简单的vim配置 2.Linux编译器-gcc/g的使用2.1 准备阶段2.2gcc的使用2.… Linux系统vimgccg工具使用及环境配置动静态库的概念及使用 1. Linux编辑器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5简单的vim配置 2.Linux编译器-gcc/g的使用2.1 准备阶段2.2gcc的使用2.3 解析gcc text.c的执行过程2.4gcc/g选项2.5 补充内容 3.静态库和动态库3.1动静态库的概念3.2 指令ldd3.3使用动静态库 所属专栏Linux学习❤️ 博主首页初阳785❤️ 代码托管chuyang785❤️ 感谢大家的支持您的点赞和关注是对我最大的支持❤️ 博主也会更加的努力创作出更优质的博文❤️ 1. Linux编辑器-vim的使用
1.1 vim的基本概念
如果你的Linux下还没有安装vim则执行下面指令 sudo yum install -y vim vim的三种模式(其实有好多模式目前掌握这3种即可),分别是命令模式command mode、插 入模式Insert mode和底行模式last line mode各模式的功能区分如下
正常/普通/命令模式(Normal mode) 控制屏幕光标的移动字符、字或行的删除移动复制某区段及进入Insert mode下或者到 last line mode插入模式(Insert mode) 只有在Insert mode下才可以做文字输入按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。末行模式(last line mode) 文件保存或退出也可以进行文件替换找字符串列出行号等操作。 在命令模式下shift: 即可进入该模 式。要查看你的所有模式打开vim底行模式直接输入
1.2vim的基本操作
进入vim,在系统提示符号输入vim及文件名称后就进入vim全屏幕编辑画面: vim test.c如果没有text.c这个文件就会先创建并进入编辑如果有该文件则直接进入编辑不过有一点要特别注意就是你进入vim之后是处于[正常模式]你要切换到[插入模式]才能够输入文字。 [正常模式]切换至[插入模式]有三种方式 输入a输入i输入o [插入模式]切换至[正常模式] 目前处于[插入模式]就只能一直输入文字如果发现输错了字,想用光标键往回移动将该字删除可以先按一下「ESC」键转到[正常模式]再删除文字。当然也可以直接删除。 [正常模式]切换至[末行模式] 「shift ;」, 其实就是输入「:」这个时候就可以在屏幕的最底下看到一行输入行。 退出vim及保存文件,在[正常模式]下按一下「:」冒号键进入「Last line mode」,例如: : w 保存当前文件: wq (输入「wq」,存盘并退出vim): q! (输入q!,不存盘强制退出vim)
1.3vim正常模式命令集
插入模式
命令功能按「i」切换进入插入模式「insert mode」按“i”进入插入模式后是从光标当前位置开始输入文件按「a」进入插入模式后是从目前光标所在位置的下一个位置开始输入文字按「o」进入插入模式后是插入新的一行从行首开始输入文字。
从插入模式切换为命令模式
命令功能按「ESC」键。退出当前模式
移动光标
命令功能vim可以直接用键盘上的光标来上下左右移动但正规的vim是用小写英文字母「h」、「j」、「k」、「l」分别控制光标左、下、上、右移一格按「G」移动到文章的最后按「 $ 」移动到光标所在行的“行尾”按「^」移动到光标所在行的“行首”按「w」光标跳到下个字的开头按「e」光标跳到下个字的字尾按「b」光标回到上个字的开头按「#l」光标移到该行的第#个位置如5l,56l按gg进入到文本开始按「ctrl」「b」屏幕往“后”移动一页按「ctrl」「f」屏幕往“前”移动一页按「ctrl」「u」屏幕往“后”移动半页按「ctrl」「d」屏幕往“前”移动半页
删除文字
命令功能「x」每按一次删除光标所在位置的一个字符「#x」例如「6x」表示删除光标所在位置的“后面包含自己在内”6个字符「X」大写的X每按一次删除光标所在位置的“前面”一个字符「#X」例如「20X」表示删除光标所在位置的“前面”20个字符「dd」删除光标所在行「#dd」从光标所在行开始删除#行
复制
命令功能「yw」将光标所在之处到字尾的字符复制到缓冲区中。「#yw」复制#个字到缓冲区「yy」复制光标所在行到缓冲区。「#yy」例如「6yy」表示拷贝从光标所在的该行“往下数”6行文字。「p」将缓冲区内的字符贴到光标所在位置。注意所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。「#p」批量复制
替换
命令功能「r」替换光标所在处的字符。「R」替换光标所到之处的字符直到按下「ESC」键为止。
撤销上一次操作
命令功能「u」如果您误执行一个命令可以马上按下「u」回到上一个操作。按多次“u”可以执行多次回复。「ctrl r」撤销的恢复
更改
命令功能「cw」更改光标所在处的字到字尾处「c#w」例如「c3w」表示更改3个字shift~大小写快速切换
跳至指定的行
命令功能「ctrl」「g」列出光标所在行的行号。「#G」例如「15G」表示移动光标至文章的第15行行首
批量注释
命令功能第一步ctrl v第二步hjkl选中区域第三步shift i第四步输入“//”注释符第五步esc退出批量注释第一步ctrl v第二步hjkl选中区域第三步按d批量解注释
1.4vim末端模式命令集
在使用末行模式之前请记住先按「ESC」键确定您已经处于正常模式再按「」冒号即可进入末行模式。
列出行号
命令功能「set nu」:输入「set nu」后会在文件中的每一行前面列出行号。「set nu」:输入「set nonu」后会在文件中取消列出的行号。
跳到文件中的某一行
命令功能「#」「#」号表示一个数字在冒号后输入一个数字再按回车键就会跳到该行了如输入数字15再回车就会跳到文章的第15行。
查找字符
命令功能「/关键字」:先按「/」键再输入您想寻找的字符如果第一次找的关键字不是您想要的可以一直按「n」会往后寻找到您要的关键字为止。「?关键字」先按「?」键再输入您想寻找的字符如果第一次找的关键字不是您想要的可以一直按「n」会往前寻找到您要的关键字为止。问题 和 查找有和区别输入/后一直按n是向下搜寻但是输入一直按n怎是一直向上搜寻
保存文件
命令功能「w」:在冒号输入字母「w」就可以将文件保存起来
离开vim
命令功能「q」按「q」就是退出如果无法离开vim可以在「q」后跟一个「!」强制离开vim。「wq」一般建议离开时搭配「w」一起使用这样在退出的时候还可以保存文件。
1.5简单的vim配置
配置文件的位置 在目录 家目录下面有个名为vimrc的文件这是系统中公共的vim配置文件对所有用户都有效。 而在每个用户的主目录下都可以自己建立私有的配置文件命名为“.vimrc”。例如/root目录下 通常已经存在一个.vimrc文件,如果不存在则创建之。 切换用户成为自己执行 su 进入自己的主工作目录,执行 cd ~ 打开自己目录下的.vimrc文件执行 vim .vimrc 配置vim 命令vim .vimrc就可以在里面进行相应的配置了当然配置资网上很多这里就列举一些常用的。
设置语法高亮: syntax on显示行号: set nu设置缩进的空格数为4: set shiftwidth4
2.Linux编译器-gcc/g的使用
2.1 准备阶段
背景知识 预处理进行宏替换)编译生成汇编)汇编生成机器可识别代码连接生成可执行文件或库文件)
这可以回顾一下之前学的两期知识点C语言预处理和栈帧的创建和销毁有助于大家知识点的回顾。
准备阶段 如果是新手的话在centos7镜像文件版本下如果没有下载gcc/g编译工具的话执行一下命令 sudo yum install -y gcc/g 2.2gcc的使用
gcc使用方法 格式 gcc [选项] 要编译的文件 [选项] [目标文件] 执行./可执行文件 2.3 解析gcc text.c的执行过程 一个.c文件想要成为一个.o的可执行文件需要经过预处理编译汇编链接四个过程 预处理(进行宏替换) 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。 预处理指令是以#号开头的代码行。 实例: gcc –E text.c –o text.i 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。 选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。 编译生成汇编 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作, 在检查无误后,gcc 把代码翻译成汇编语言。 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。 实例: gcc –S text.i –o text.s 翻译成汇编代码 汇编生成机器可识别代码 汇编阶段是把编译阶段生成的“.s”文件转成目标文件 读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的可重定位二进制目标文件了不可被执行 实例: gcc –c text.s –o text.o 此时在执行vim text.o的时候出现的是一堆乱码这是因为此存储的是二进制一堆01序列。 连接生成可执行文件或库文件 在成功编译之后,就进入了链接阶段。 实例: gcc hello.o –o hello 进行以上预处理编译汇编三个步骤生成的.o文件还不能运行,要最后经过链接后才可以被执行。 上面这个过程就说明了.o文件是不能执行的即使有权限也不能。
2.4gcc/g选项
选型功能-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S编译到汇编语言不进行汇编和链接-c编译到目标代码-o文件输出到 文件-static此选项对生成的文件采用静态链接-g生成调试信息。GNU 调试器可利用该信息。-shared此选项将尽量使用动态库所以生成文件比较小但是需要系统由动态库.-O0-O1-O2-O3编译器的优化选项的4个级别-O0表示没有优化,-O1为缺省值-O3优化级别最高-w不生成任何警告信息。-Wall生成所有警告信息
2.5 补充内容
补充知识点——命令行定义 我们可以在命令行中添加-D选项
3.静态库和动态库
3.1动静态库的概念 在这里涉及到一个重要的概念:函数库 我们的最后一个阶段链接。我们的C程序中并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现也就是说我们生成的.o文件只是把我们自己写的代码编译好了但是并没有把我们使用了系统当中库里面的函数与库进行关联。那么我们把我们生成的可执行文件与系统中的库进行关联叫做链接。 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也 就不再需要库文件了。其后缀名一般为“.a” 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销往后无论是谁要使用来自动态库的函数都会从同一个地方去拿也就是说动态库只存在一份。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态 库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc默认生成的二进制程序是动态链接的这点可以通过 file 命令验证。 使用方法file 可执行文件 Linux下的动态库放在了/lib64/libc.so.6文件下静态库放在/lib64/libc.a文件下。 动态库 动态库的优点比较节省资源不会出现太多的重复代码。 因为无论你使用了动态库中的同一函数多少份虽然你的调用次数很多但是代码实现只有一份。没有重复代码也就是说剩下的代码所占的空间都是必要的空间最后生成的可执行程序的大小就是所占空间的最小集合那么存放到磁盘上的空间也是最小的可执行程序加载到内存当中也是最小的不经如此我们可执行程序打包放到网上网络运输效率也是最快的所以这里的节省资源包括磁盘资源内存资源网卡资源等。动态库的缺点对库的依赖性比较强。 一旦动态库丢失所有使用这个库的程序都将无法使用。 再如我们linux下的一些指令都是使用到了C标准库的一点库丢失了这些指令将不能正常运行。 静态库 优点不依赖库同类型平台中都可以直接运行使用也就是可移植性高。缺点可执行程序体积比较大比较浪费资源。
3.2 指令ldd 功能查看可执行程序所以来的库文件 使用方法ldd 动态链接的)可执行文件 例如我们上面生成text可执行文件。
无论是什么系统都存在两种库——静态库和动态库
库LinuxWindows静态库后缀.so.lib动态库后缀.a.dll
认识库 那我们怎么分辨用了什么库呢 我们认识库的方法是去掉lib和.os以及.os后序的内容就是所用的库的类别 至于为什么我们能在Linux下写C语言是因为我们在安装linux的时候系统已经为我们安装好了C语言的标准头文件语句库文件。 在目录/usr/include下包含了所有的头文件。 在目录/lib64/底下包含了很多的我们要使用的开发库 尤其是/lib64/libc*这个库尤为重要。
3.3使用动静态库
Linux下是默认使用的动态库的也因此Linux下是默认没有安装静态库的所以要执行以下指令安装C/C的静态库 这个静态库安装的路径是 /lib64/libc.a 我们使用gcc/g是默认使用的动态库,动态链接 我们要使用动态链接需要加选项-static 从这里我们也能看出动态链接与静态链接所生成的可执行文件的大小关系。