栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Vim文本编辑器与GCC编译器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Vim文本编辑器与GCC编译器

vim文本编译器 vim概述

vim是增强型的vi,沿用vi的操作方式

高亮显示关键字和语法错误,编程时特别有用

功能强大,可高度定制和拓展

多窗口编辑、语法高亮、代码折叠、代码补全、编译及错误跳命令模式

vim用于文本编辑,而非文本排版

vim基本概念

vim是vi命令发展而成的一种文本编辑器,具有代码补充、错误跳转等功能。vim的设计理念是命令的组合。各种各样的文本间移动、跳转命令与其他普通模式的编辑命令灵活地组合使用,更加高效地进行文本编辑,因此这种编辑器被程序员广泛使用。

命令模式

启动 vim 后首先进入命令模式

等待输入命令而非普通文本 可以进行移动光标、文本查找与替换,及文本复制、粘贴或删除

 命令模式 - 移动光标

操作

作用

H或←

光标向左移动一个字符

L或→

光标向右移动一个字符

K或↑

光标向上移动一个字符

J或↓

光标向下移动一个字符

W

光标移动到下一个单词

B

光标移动到上一个单词

G

光标到文件的最后一行

gg

光标到文件的第一行

命令模式 - 剪切、复制、粘贴文本

操作

作用

x

伤处光标所在的字符,并向后删除

X

删除光标所在的字符,并向前删除

n(数字)  x

连续向后删除n个字符

dd

剪切光标所在行

n(数字)  dd

剪切自光标所在位置以下的n行

yy

复制光标所在的行

n(数字)  yy

复制光标所在行向下n行

p

将复制或剪切的内容粘贴到光标所在位置的下一行

P

将复制或剪切的内容粘贴到光标所在位置的上一行

U

撤销前一个动作

插入模式

在命令模式下输入 I、i、O、o、A、a或 R、r (替换), 进入插入模式

在插入模式下进行文件编辑

等待输入文本而非命令

按 Esc 键回到命令模式

 

末行模式

在命令模式下输入 : : / 或 ? ,进入末行模式

光标移至最后一行,等待输入命令而非文本

通过特定命令对文件进行查找、替换、保存、退出等操作

按 Esc 键回到命令模式

末行模式 - 查找与替换文本

 末行模式 - 保存、退出、读取文件

 

  GCC编译器 简介

GCC(GNU Compiler Collection)是一款编译语言编译器,此项目最早由GNU计划的发起者理查德· 斯托曼开始实施。第一版GCC于1987年发行,最初的GCC代表GNU C Compiler,即GNU的C语言编译器。后来经过不断地发展,GCC适应了C++、Objective-C、Java、Go等更多编译语言。GCC最重要的特点为实现跨硬件平台编译,即可在当前的CPU平台上为其他体系结构的硬件平台(ARM、MIPS、X86、PowerPC)开发软件,目前这一方式被广泛应用于嵌入式开发中。

GCC编译器流程

使用Vim编辑器编辑C语言文件test.c,使用GCC编译器进行编译。

将C语言代码文件test.c通过gcc命令执行编译,生成编译后的执行代码a.out,执行a.out得到程序的运行结果。

分布编译

从源代码test.c到执行代码a.out,总共经历了4个编译必不可少的步骤,分别是预处理(Pre-Processing)、编译(Compiling)、汇编(Assembling)、链接(Linking)。

 预处理

1)在预处理阶段GCC主要处理带“#”的指令,如#include(头文件)、#define(宏定义)等,并删除注释、添加行号和文件名标识。例如,例中的代码,在预处理的阶段将把包含的头文件stdio.h添加进来(解析头文件),然后生成预处理文件test.i。

2)预处理可以通过GCC编译器单步编译实现,只需在命令gcc中添加选项“-E”即可。该选项的作用就是让编译器执行完预处理后停止编译过程。

 编译

1)编译阶段中,GCC对预处理文件进行词法分析、语法分析、语义分析,检查代码的规范性。确认无误后,GCC将代码翻译为汇编语言。同样,编译也可以使用GCC编译器进行单步操作。添加选项“-S”即可完成编译操作,而不会继续执行汇编处理。

 汇编

1)汇编阶段汇编代码转换为机器可以执行的指令。使用编译器进行单步操作,通过添加选项“-c”即可指定生成二进制的目标文件。例中生成二进制目标文件test.o。

 链接

1)链接是一个复杂的过程,包括符号地址确定、符号解析与重定位、指令修正等。链接阶段有一项重要的工作,就是链接库文件,程序代码中经常会出现一些函数接口的使用,这些函数并不需要开发者自己实现,其功能已经被写好并编译到函数库中,开发者只需要调用库函数即可。

2)函数库分为静态库与动态库两种。对静态库而言,编译链接时会把库文件代码加载到执行文件中,因此生成的文件体积较大,但运行时不需要库文件。动态库则刚好相反,在编译链接时并不会将库文件加载到执行文件,而是在程序执行时加载库文件。

执行

1)完成链接操作即可生成可执行文件

  一步完成(直接执行)

创建hello.c

编译成可执行文件:gcc hello.c –o hello

运行可执行文件:./hello

 GCC编译选项

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号