Linux系列_3:编辑器vim与编辑器gcc—g++的使用
前言
如需获取工程文件,xshell,虚拟机和镜像等,请关注公众号【0与1】,并在后台回复【Linux】
之前编写C语言程序,经常会使用到VS,VS是属于IDE的代表,也就是集成开发环境,它将上述很多功能集成于一体,让开发者只去关心代码的编写操作,而无需过多顾及其他方面,让使用者感到很方便。
正如为什么不常用Python去实现数据结构呢,因为Python封装得太厉害了,不便于我们更深层次地去掌握这些细节。所以,的确IDE很方便,但是这种方便,却不利于我们深入理解计算机,理解程序的编译等等。比如大家都知道main函数有两个参数,但是为什么有两个参数,很多人却答不上来。但是这些问题在却能Linux编程中会得到一一解答。
在Linux中编写C语言或其他语言,可以去安装类似于VS这种集成开发环境,但是我们刻意让这些功能独立。编写代码使用vim编辑器,编译代码使用gcc/g++编译器,调试代码时使用gdb调试器等等。
一:Linux软件包管理器yum及准备工作
(1)什么是软件包
A:软件包
- 区别Windows,在Linux下安装软件,第一种方法是下载程序源代码,然后进行编译,就得到了程序;第二种方法是rpm包安装。但是这两种方法都不推荐使用
- 我们推荐使用yum(Yellow dog updater,Modified)安装。 为了解决这样的麻烦,一些人将软件提前编译好并做成软件包(类似于Windows上的安装程序.exe)放置于服务器上,通过包管理器(yum正是一种包管理器)获取到软件包直接进行安装。软件包和包管理器类似于App和App store的关系。yum具有查找,下载,安装和卸载的功能
B:注意事项
- 软件包名称为:主版本号-次版本号-源程序发行号-软件包发行号-主机平台-CPU架构
C:yum基本使用
- sudo yum install -y [软件名]//yum安装软件基本语法(-y表示无需确认)
- sudo yum remove[软件名]//yum卸载软件
- sudo yum list//列出软件
(2)安装rzsz
作用:该工具可以用于Windows机器和远端Linux及其通过xshell传输文件安装
使用
二:Linux开发工具-Vim编辑器
(1)创建文件
在安装好vim之后,终端中输入vim即可打开vim编辑器
直接使用vim [文件名],即可创建文件,并进行编写。但建议不要这样做,在编写代码写时先创建好目录,文件,然后在打开已经存在的文件进行编写
(2)三种基本模式
vim是一款多模式的编辑器,共有12种模式,其中主要用到的有以下三种模式
- 命令模式:刚进入后,会发现输入任何字符都不会进行回显,这是因为此时处在命令模式下
- 插入模式:只有在插入模式下,才可以进行文字输入,按下i进行入插入模式,按下ESC则返回命令模式
- 末行模式:末行模式可以进行文件的保存,退出等等操作。命令模式下输入:即可进入该模式
1:进入插入模式的三种方式使用vim打开文件后,可以三种方式进入插入模式,略有区别
方式 | 描述 |
i | 光标原位,不会移动 |
a | 光标向后移动 |
o | 光标移至下一行 |
2:如何返回命令模式按下ESC即可返回命令模式3:如何进入末行模式切换为命令模式后,输入:,即可进入末行模式。在末行模式中可以进行保存,退出等操作。需要保存时输入w!,需要退出时输入q!,保存并退出则输入wq!。如下:
(3)vim命令模式指令集
注意以下命令,必须在命令模式下操作
A:复制与粘贴
1:复制粘贴单行
- 按下yy将光标所在行复制到缓冲区
- 按下p将缓冲区字符粘贴至光标所在行的下一行
2:复制粘贴多行
- 输入nyy,复制n行
- 输入np,粘贴n行
B:删除
1:删除某行
- 输入dd表示删除光标所在行
2:剪切
- 输入dd删除后,然后再在某行输入p,可以实现剪切功能
3:删除多行
- 输入ndd,可以删除n行(同样可以进行多行剪切)
4:删除字符
- 输入x,删除光标所在的字符,输入一次删除一个
- 输入nx,删除光标所在位置及以后的n个字符
- 输入X,删除光标所在位置的前一个字符
- 输入3X,删除光标所在位置及以前的n个字符
C:光标移动和定位
1:光标的上下定位
- 输入gg即可将光标定位至开始
- 输入G即可将光标定位至末尾
- 输入nG,即可将光标定位至第n行
2:光标的左右定位
- 输入$,将光标定位至所在行行尾
- 输入^,将光标定位至所在行行首
- 输入w,将光标定位至所在行下个单词的首字母
- 输入b,将光标定位至所在行上个单词的首字母
3:hjkl
- 输入h,将光标向前移动到上一个字符
- 输入j,将光标向下移动到下一行
- 输入k,将光标向上移动到上一行
- 输入l,将光标向后移动到下一个字符
4:打开时定位
- 输入vim test.c +n,表示打开文件后定位到test.c的第n行,该操作经常用于定位错误日志所在行
D:撤销
- 输入u表示撤销上次操作
- 输入ctrl+r表示重组
(4)vim末行模式命令集
注意以下命令全部要在末行模式下进行
A:查找
- 输入/[查询关键字],可以查找所有匹配的关键字,然后高亮显示,按住n可以向下在关键字中切换
B:设置行号
- 输入set nu调出行号
C:跨文件操作
1:分屏
- 输入vs[文件名](没有将自动创建,即可分屏)
2:切换窗口
- 在命令模式下,输入ctrl+w+w(连按两下w),即可在打开的窗口中来回切换
(5)补充
1:大小写转换
- 输入shift+~即可将光标所在的字母在大小和小写间来回切换
2:打开上次编辑的文件
- 在终端输入!vim可以打开上次编辑的文件
3:快速退出
- 快速输入两次大写Z,也即ZZ,即可快速保存并退出
(6)vim配置
如果不对vim进行一定的配置,那么纯纯的vim使用起来一定是很不爽的,因为作为一款编辑器,没有代码不全,语法高亮等基本功能是万万不可以的
一键配置,复制即可注意配置文件在普通用户目录下,也就是每个人的vim是不一样的,每个人配置的是自己的vim。
curl-sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
三:Linux编译器-gcc/g++
(1)gcc/g++完成编译的过程
A:预处理
- 预处理主要包括宏定义,文件包含,条件编译,去注释
- 输入gcc -E hello.c -o hello.i,其中选项E作用是让gcc在预处理后停止编译
B:编译
- 此阶段,gcc检查代码的规范性,是否具有语法错误
- 输入gcc -S hello.i -o hello.s,即可将预处理的结果继续编译
C:汇编
- 编译阶段无误后,进入汇编,将.s文件转化为.o二进制文件
- 输入gcc -c hello.s -o hello.o,即可将编译停止在此阶段
(打开二进制文件使用od命令)
D:链接
- 此阶段,将目标文件与系统库进行链接生成可执行文件。
- 输入gcc hello.o -o hello,则完成编译
(3)gcc/g++选项
选项 | 描述 |
-E | 进行预处理,不进行编译,汇编和链接 |
=S | 进行编译,不进行汇编和链接 |
-c | 进行汇编,不进行链接 |
-o | 链接 |
static | 采用静态链接 |
-g | 生成调试信息 |
-shared | 使用动态库 |
-O0 | 无优化 |
-O1 | 默认优化级别 |
-O3 | 优化最高 |
-w | 不生成警告信息 |
-Wall | 生成所有警告信息 |
(2)重要概念:函数库
A:gcc/g++在哪实现了函数
在学C语言时,我们知道想要向屏幕正常打印字符,则必须在头部引入inlcude
进入该路径,可以发现这里存放的便是头文件
可是gcc为什么知道头文件会在这个路径下的呢?实际上,在没有特别指定时,gcc会默认搜索路径/usr/lib,并进行查找。这也就是引用头文件时两种方式的区别所在:include
B:静态库与动态库
- 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名为.a。输入gcc hello.c -o helloc -static,,采用静态链接
- 动态库在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序运行时由运行时链接文件加载库,这样做可以节省系统开销。动态库后缀名一般为.so,gcc在编译时默认使用动态库,完成链接之后,就生成了可执行文件。
所以动态链接形成的程序体积较小,比较节省资源,但是一旦库丢失,程序就不可以运行了;而静态形成的程序的体积很大,但具有独立性,即便库丢失,也不影响程序运行。
我告诉你msdn版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!