通常,LInux系统中用到的基本工具有Vim编辑器,gcc编译器等。在本文中我将叙述有关Vim编辑器和gcc编译器的相关知识。
首先叙述一下Vim编辑器, VIm编辑器一般有13种模式,但常见的只有3种:
(1)插入模式:插入数据,按ESC键退出。
(2)普通模式:基本操作,控制屏幕光标的移动、字符、字或行的删除。
(3)底行模式:文件保存或退出,也可以进行文件替换、字符串、列出行号等操作。
Vim编辑器中所有的模式都是围绕普通模式进行切换,如果不确定当前在什么模式下,多按几下esc就回普通模式下。下面介绍一下有关普通模式下的一些基本操作:
(1) 移动光标
h j k l 上下左右
w 向右移动 一个单词
b 向左移动一个单词
O S 行首和行尾
gg 移动到文档的行首
Ctrl+f 向下翻页
Ctrl+b 向上翻页
(2)复制
yy 复制光标所在行
nyy 从光标所在行开始复制n行
(3) 粘贴
p(小写) 向光标所在行下方粘贴
P(大写) 向光标所在行上方粘贴
(4)删除
(vim中没有真正的删除,删除的数据都放到了剪贴板)
(5) 剪贴(vim中删除==剪贴)
dd 删除光标所在行
ndd 从光标所在行开始删除向下的n行数据
x 删除光标所在字符
dw 删除光标以后的第一个单词
D 删除光标所在行,光标以后的数据
(6)其它操作:
u 后退到上一次操作
Ctrl+r 前进到下一次操作
Vim中除了有关普通模式下的操作外,插入模式,普通模式和底行模式下的相互转换也是其重要操作。下面将一一概述:
(1)普通模式-——>插入模式
i 从光标所在位置开始插入
a 从光标向后移动一个字符的位置开始插入
o 在光标所在的行下方添加一个新行开始插入
I 光标移动到行首开始插入
A 光标移动到行尾开始插入
O 从光标所在行上方添加一个新行开始插入
(2) 普通模式——>底行模式
输入一个冒号就进入了底行模式
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出(不保存)
:!pwd 临时执行一个外部的shell命令,回车返回
(3) 插入模式——>普通模式
esc
而gcc编译器作为Linux系统中常用的c语言代码编译工具,通常它的工作过程基本可以分为四个阶段:
(1)预处理:展开所有代码。
(2)编译: 纠错,然后将C语言代码编译成汇编代码。
(3)汇编: 将汇编代码解释为机器代码。
(4)链接:生成可执行的文件。
与之对应的gcc编译器常用工具选项包括:
-o 仅用于指定要生成的文件名称
-E 仅仅执行预处理操作,不会执行编译及以后的操作
-S 仅仅执行到编译操作完成,不会进行汇编及以后的操作(包含纠错功能)
-c 仅仅执行到汇编完成,不会进行后续操作
当代码经过汇编之后仅仅是将代码本身解释成机器代码,此时这个汇编后的代码是不完全的,所以也就是一个不完整的可执行程序,这时候需要将printf所在库文件链接进来。
一般将库中所有的代码都链接过来就会造成一种情况:当多个程序运行起来,那么内存中将会产生非常多的重复代码这时候关于链接就产生了两种情况:
(1)动态链接:不把库中的代码拿过来,而是仅仅记录一些代码的位置符号信息在自己的代码中,运行的时候才会去找这段代码。生成的可执行程序比较小,但是对库的依赖程度比较高。动态库链接的是动态库。
(2)静态链接:直接将库中的所有代码拿过来写入到可执行程序中,这样生成的可执行程序比较大,但是对库的依赖程度低。静态库链接的是静态库。
在LInux系统中,gcc通常默认的链接方式是动态链接。汇编之后将所有的.o文件和所依赖的库合在一起最终生成一个可执行程序。