免费申请网站空间和域名,seo查询工具有哪些,公司装修怎么样,产品通过网站做营销文章目录 1、Linux 软件包管理器 yum1.1 什么是软件包1.2 如何安装软件1.3 如何卸载软件 2、vim的使用2.1 vim的安装和配置2.2 vim的基本概念2.3 vim的基本操作 3、vim正常模式命令集4、vim注释与去注释5、Liunx编辑器-gcc/g使用5.1 如何使用gcc编译c程序5.2 gcc的翻译过程5.2.… 文章目录 1、Linux 软件包管理器 yum1.1 什么是软件包1.2 如何安装软件1.3 如何卸载软件 2、vim的使用2.1 vim的安装和配置2.2 vim的基本概念2.3 vim的基本操作 3、vim正常模式命令集4、vim注释与去注释5、Liunx编辑器-gcc/g使用5.1 如何使用gcc编译c程序5.2 gcc的翻译过程5.2.1 预处理5.2.2 编译生成汇编5.2.3 汇编5.2.4 链接 5.3 函数库动静态库的优缺点 1、Linux 软件包管理器 yum
Linux下安装软件的三种方式1. 源代码安装2. rpm包安装3. yum一键式安装。
1.1 什么是软件包
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.rpm安装 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系. yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上. yum安装
1.2 如何安装软件
通过 yum, 我们可以通过很简单的一条命令完成 sl 的安装(root用于登录直接执行yum ……即可普通用户需要提权sudo yum ……)。
root身份yum install sl
普通用户sudo yum install slyum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装. 出现 “complete” 字样, 说明安装完成. 注意事项: 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成或者普通用户被root添加为信任用户sudo提权即可. yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错。 安装后直接输入sl屏幕上就会出现一个小火车跑过去。
1.3 如何卸载软件
仍然是一条命令以删除sl为例
root身份yum remove sl
普通用户sudo yum remove sl过程中仍然需要输入y表示同意。
2、vim的使用
2.1 vim的安装和配置
在配置前先讲一下信任列表的问题。 普通用户想要正常下载东西需要提权提权的时候输入的是自己的密码这不就是bug么其实本质是root用户对普通用户添加了信任验证因此提权时输入自己的密码就能下载东西。 所以现需要用root登录然后打开sudoers
vim /etc/sudoers进入文件后来到100行100行左右有一个 root ALL(ALL) ALL 将本行复制下来拷贝到下一行将root改为用户名字之后需要提权做一些事的时候就可以正常做了。
最后退出的时候 wq!强制保存退出就完成了信任用户的添加。 配置的时候建议大家在普通用户下进行配置。 **vim的安装**vim是一款软件需要安装指令
sudo yum install vimvim的配置安装好后大家可以在命令行中执行下列指令它会自动配置vim编辑器本链接只支持centos7配置其他版本一概不支持。
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh bash ./install.sh安装完成后我们根据提示输入相关指令或者重启终端再使用vim此时vim就有了代码补全、代码高亮、自动纠错等相关功能了。
这里自动化配置完后的vim缩进是2个字符我们想要缩进为4个字符改一下配置信息即可
cd ~
vim .vimrc打开 .vimrc 后来到50行将505152行的数字改为4就改为了自动缩进4个字符。 配置完后的vim效果
2.2 vim的基本概念
vim是一款Linux下的文本编辑器功能很强大可以用来写代码。它是一款多模式的编辑器 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底行模式直接输入 :help vim-modes 2.3 vim的基本操作
如何进入vim呢 输入vim及文件名称后就进入vim全屏幕编辑画面 vim test.c 进入vim之后是处于[正常模式]你要切换到[插入模式]才能够输入文字 [正常模式]切换至[插入模式] 按「i」切换进入插入模式「insertmode」按“i”进入插入模式后是从光标当前位置开始输入文件按「a」进入插入模式后是从目前光标所在位置的下一个位置开始输入文字按「o」进入插入模式后是插入新的一行从行首开始输入文字 用的最多的其实是i从当前位置开始输入。
此时当我们已经写完时我们按ESC从命令模式先切换到命令模式。 进入命令模式后再切换到底行模式shift其实就是输入:
此时输入wq再输入回车键即可保存退出。
: w 保存当前文件: wq (输入「wq」,存盘并退出vim): q! (输入q!,不存盘强制退出vim)
这时我们来看看刚我们写的test.c文件有没有保存查看一下 我们看到写的内容已经保存到了文件中。
3、vim正常模式命令集
以下这些命令可以自测学习一下 移动光标 vim可以直接用键盘上的光标来上下左右移动但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」分别控制光标左、下、上、右移一格 按「G」移动到文章的最后 按「 $ 」移动到光标所在行的“行尾” 按「^」移动到光标所在行的“行首” 按「w」光标跳到下个字的开头 按「e」光标跳到下个字的字尾 按「b」光标回到上个字的开头 按「#l」光标移到该行的第#个位置如5l,56l 按gg进入到文本开始 按shiftg进入文本末端 按「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”配合才能完成复制与粘贴功能。 替换 「r」替换光标所在处的字符。 「R」替换光标所到之处的字符直到按下「ESC」键为止。 撤销上一次操作 「u」如果您误执行一个命令可以马上按下「u」回到上一个操作。按多次“u”可以执行多次回 复。 「ctrl r」: 撤销的恢复 更改 「cw」更改光标所在处的字到字尾处 「c#w」例如「c3w」表示更改3个字 跳至指定的行 「ctrl」「g」列出光标所在行的行号。 「#G」例如「15G」表示移动光标至文章的第15行行首
4、vim注释与去注释
注释 在命令模式下按ctrlv进入视图模式使用 j、k 选中区域再按shifti此时是插入打注释//最后按esc就对选中的区域进行了批量化注释。 去注释 在命令模式下按ctrlv进入视图模式使用 h、j、k、l 选中区域再按d完成批量化去注释。
5、Liunx编辑器-gcc/g使用
5.1 如何使用gcc编译c程序 格式 gcc [选项] 要编译的文件 [选项] [目标文件] 我们以刚才写的test.c为例来编译 此时多出来的a.out就是可执行程序相当于Windows下以 .exe结尾的文件。 如何执行呢 输入 ./a.out来执行 a.out是gcc默认编译后的名称我们也可指定名称加上 -o 选项即可指定名称。
gcc test.c -o mytest / gcc -o mytest test.c //顺序可以变但是-o后跟指定名称注意我们说过Linux下文件不以后缀区分但是并不代表gcc/g也是这样gcc/g还是以文件后缀区分文件的。
5.2 gcc的翻译过程
5.2.1 预处理
预处理功能主要包括宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。实例: gcc –E hello.c –o hello.i本来是打印在屏幕的我们指定输出到hello.i文件中选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序
我们来写代码在Linux下看一下程序的翻译过程。
gcc -E test.c -o test.i-E从现在开始进行程序的翻译当预处理完成时就停下来。 我们这时来对比一下 .c与.i 先进入test.c再进入底行模式中输入 vs test.i 回车就会分屏光标在哪个文件中就处在哪个文件中切换所在文件位置ctrlww。 打开.i后我们输入shiftg快速来到末行。 结论通过条件编译可以实现对代码的动态裁剪。
5.2.2 编译生成汇编
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
当我们想要在编译完后想让编译结束后停下来输入
gcc -S test.i -o test.s-S从现在开始进行程序的翻译当编译完成时就停下来。
我们进入test.s 看看内容 此时的代码变得短了不少了这时的代码就是x86环境下的汇编代码了。
5.2.3 汇编
汇编阶段是把编译阶段生成的“.s”文件转成目标文件读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
当我们想要在汇编完后想让编译结束后停下来输入
gcc -c test.s -o test.o-c从现在开始进行程序的翻译当汇编完成时就停下来。
此时我们打开test.o文件看到内容就是二进制文件了。二进制文件打开方式
od test.o虽然是二进制文件但是它还是不能执行的。
5.2.4 链接
在成功编译之后,就进入了链接阶段。 此时输入
gcc test.o -o mytest //指定生成的文件名字为mytest此时生成的就是可执行程序。
5.3 函数库
我们的C程序中并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?最后的答案是:系统把这些函数实现都被做到名为 libc.so.6库的名称去掉前缀lib后缀.so.6得到c就是库名称 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用
函数库一般分为静态库和动态库两种。 静态库 静态库是指编译链接时,把所依赖的库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a” 动态库 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件。 gcc默认生成的二进制程序就是动态链接的想要生成静态链接在编译时加上-static选项 (gcc xxx.c -o xxx -static 生成的程序就是静态链接)。
动静态库的优缺点
动态库 优点 生成的可执行程序体积小比较节省资源 缺点 强依赖动态库动态库没了所有依赖这个库的程序都无法运行。
静态库 优点 无视库可以独立运行 缺点 生成的可执行程序体积大比较浪费资源。