vi/vim 分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode
命令模式:
用户启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
gedit
是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它使用GTK+编写而成,因此它十分的简单易用,有良好的语法高亮,对中文支持很好,支持包括gb2312、gbk在内的多种字符编码。gedit是一个自由软件。
这是 Linux 下的一个纯文本编辑器,但你也可以把它用来当成是一个集成开发环境 (IDE), 它会根据不同的语言高亮显现关键字和标识符。
具体操作跟windows的文件编辑差不多,比较简单
gedit是图形界面下的文本编辑
vi是命令界面和图形界面均可使用
GCC不只是一个C编译器
GCC = GNU Compiler Collection
GCC支持多种高级语言的编译
GNU工具是一个强大的工具集合,包含预处理器、编译器、汇编器、链接器等组件
gcc下的C程序编译过程
1.预处理
2.编译成汇编代码
3.汇编成目标代码
4.链接
编译时,使用-v选项,可看到许多被隐藏的信息
gcc -o gcctest gcctest.c -v
使用**-E**参数输出文件的后缀为.cpp
gcc –E –o gcctest.cpp gcctest.c
使用wc
命令比较预处理后的文件与源文件,可以看到两个文件的差异
预处理文件 => 汇编代码
使用-x
参数说明根据指定的步骤进行工作
cpp-output
指明从预处理得到的文件开始编译
使用-S
说明生成汇编代码后停止工作
gcc –x cpp-output –S –o gcctest.s gcctest.cpp
也可以直接编译到汇编代码
gcc –S gcctest.c
汇编代码 => 目标代码
gcc –x assembler –c gcctest.s
-c
:只编译不链接
直接编译成目标代码
gcc –c gcctest.c
使用汇编器生成目标代码
as –o gcctest.o gcctest.s
目标代码 => 执行代码
gcc –o gcctest gcctest.o
直接生成执行代码
gcc –o gcctest gcctest.c
优化编译选项
O0
:缺省情况,不优化O1
:第一级优化O2
:O3
GNU binutils
是一组二进制工具程序集
addr2line
将程序地址转换为文件名和行号
在命令行中给出地址和可执行文件名,使用可执行文件的调试信息指出对应源文件以及行号
ar
建立、修改、提取归档文件
归档文件结构保证可恢复原始文件内容
as
GNU汇编器,主要用来编译gcc输出的汇编文件
将汇编代码转换成二进制代码,并放到一个文件
该目标文件将由连接器ld连接
ld
连接器,将目标和归档文件结合起来形成可执行文件
通常,建立一个新编译程序的最后一步就是调用ld
nm
列出目标文件中的符号
objcopy
将一种类型目标文件转换成另一种类型的目标文件
objdump
显示一个或更多目标文件的信息
使用选项来控制其显示的信息
ranlib
产生归档文件索引,并将其保存到这个归档文件中
索引列出归档文件各成员所定义的可重分配目标文件
readelf
列出目标文件每一段的大小以及总体的大小
显示elf格式可执行文件的信息
size
列出目标文件每一段的大小以及总体的大小
用于建立、修改、提取归档文件(archive)
将一种格式文件生成另一种格式文件
使用file命令查看文件类型
file test
生成srec格式的目标文件
objcopy -O srec test ts
使用file命令查看新文件的类型
file ts
显示一个或多个目标文件的信息
objdump
对编写编译工具、分析代码执行机制非常有用objdump -f test
-f
选项:显示头文件内容
显示一个或多个ELF格式的目标文件信息
readelf -h test
gdb = GNU debuger
gcc –g –o bug bug.c
-g
:在可执行程序中包含标准调试信息