1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境

目录

1.掌握Linux常用的基本命令功能、语法结构和用法示例

1.1linux编程环境

1.1.1系统平台环境

linux平台特性

1.1.2开发工具环境

1.1.3基于文模式的开发平台

1.1.4集成开发平台Eclipse+CDT

1.1.5文档帮助环境

1.2常用编辑器

1.2.1VIM编辑器

1.VIM的模式

2.VIM的启动保存和退出

3.光标快速移动

4.文本的插入

5.文本内容的删除操作

6.恢复修改及恢复删除操作

7.复制和粘贴的操作

8.查找

9.替换

10.关于行号 

1.2.2Emacs编辑器

1.概念介绍

(1)缓冲区buffer

(2)窗口frame

(3)模式mode

2.文件缓冲区和窗口操作

3.简单的光标移动操作 

4.插入与删除 

5.取消动作

6.查找和替换​


1.掌握Linux常用的基本命令功能、语法结构和用法示例

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第1张图片

参考用书: 金伟正,嵌入式Linux系统开发与应用, 电子工业出版社

参考ppt:第3章-Linux编程环境和第4章-Linux外壳程序编程

参考实验指导书

1.1linux编程环境

1.1.1系统平台环境

\bigstar创建一个进程要比创建一个线程耗用更多的时间和空间资源;

linux平台特性

(1)多任务的:可以同时创建多个线程或进程来完成多个不同的任务,决不能认为自己的程序是系统唯一的运行实例;同一个用户或不同的用户可以运行该程序的其他实例。因此,在某些情况下必须小心对待同步的问题

(2)真正的多用户系统:意味着存在某种安全机制,确保把不同用户的文件隔开。用户的程序不像在其他系统中那样,可以修改或者移动任何文件,除非他是root用户。

1.1.2开发工具环境

\bigstar一套完整的开发工具至少包括:编辑工具、编译工具和调试工具,如果是大型项目,还要有配置工具和项目管理工具。

\bigstar开发环境大体分为基于文本的开发平台(典型组合是vim/emacs+gcc+gdb)和集成开发平台(Eclipse+CDT插件)。近年来,Linux受到越来越多的开发者和普通用户的喜爱,Linux上的集成开发工具也越来越多,比较出名的有Kylix、Eclipse等。

1.1.3基于文模式的开发平台

(1)编辑工具:开发者们使用类似于EDIT的工具——经典的vi来编辑源程序。当然,还有更高档一些的,如joe、emacs等。总之,编辑程序与编译工作是分开的。

(2)编译工具:先用编辑工具输入源程序,然后再执行一长串的命令(包括参数)进行编译。

例如:gcc -o hello hello.c就是将hello.c编译为hello,然后你还需要为其赋予可执行的权限,这样才完成了整个工作。

(3)调试工具:程序运行中,发现存在bug,就需要确定出错位置和出错原因以及一些运行时数据。通过gdb调试程序,可以查看程序运行行中某一变量值,支持断点调试等功能。

\bigstar为了完成大型软件项目,开发了一种叫make的工具。Make依据一个Makefile文档来工作。

\bigstar一个简单的Makefile文档其实就是以上那些gcc命令的集合。编辑好之后,只需输入make就可以让它自动运行这些编译命令。Makefile 文档中一个重要的概念就是目标,它用来告诉make要完成些什么工作。比如几乎所有的GNU标准的Makefile都应该有一个叫all的目标,顾名思义就是生成最终的结果。

\bigstar可以用automake的工具来自动生成Makefile,当然这时候也会用到其他一些如autoscan、autolocal、autoconf等工具。

\bigstar同时为了供不同的开发人员之间的分工合作,Linux还提供了CVS用于版本控制、管理的软件配置管理工具。

1.1.4集成开发平台Eclipse+CDT

1.下载安装Eclipse;

2.下载CDT二进制文件;

注意:请下载适合你操作系统的正确的CDT。遗憾的是,即使CDT是用Java编写的,它是与平台有关的。将归档文件解压到临时目录中,从临时目录将所有插件目录内容都移到Eclipse plugins子目录。还需要将features目录内容移到Eclipse features子目录中。

3.在Eclipse中安装CDT之后:

浏览至File=>New=>Project,有三个可用项目类型:C(“standard c Make Proiect”)、C++(“Standard C++ Make Project”)和“Convert to C or C++ Projects”。

从Standard Make C++ Project开始,为项目创建源代码文件。在C/C++Projects视图中,单击鼠标右键,然后选择New=>simple=>File,命名文件并保存。

可以用这种方法创建许多头文件以及C/C++实现代码文件。最后,是Makefile,GNU make将使用它来构建二进制文件。Makefile使用GNU make语法。

请记住:Makefile要求使用Tab字符而不是空格来产生缩进。

4.将现有的源代码导入Eclipse:使用Import向导,将文件从文件系统目录复制到工作台;

File=>Import=>File System,单击Next,打开源目录,选择想要添加文件的目录。单击Select All以选择目录中的所有资源,然后从头到尾检查,取消选择你不打算添加的那些资源。指定将作为导入目标的工作台项目或文件夹。还可以通过从文件系统拖动文件夹和文件并将它们放入Navigatoin视图中,或者通过复制和粘贴来导入文件夹和文件。

5.CDT提供了一种设置项目构建选项的简单方法。

CDT依赖于三个GUN工具GCC、GDB和Make.因此,对用于调试的GDB或用于编译的GCC和Make的依赖,要求这些应用程序可用于用户想要使用的平台。大多数Linux(通常和类POSIX)源代码软件包使用autoconf脚本来检查构建环境,所以必需运行configure命令,该命令在编译之前创建“Makeflile”。

如果通过调用make命令来构建项目,那么缺省设置没问题,但是,如果使用一种更复杂的方法进行构建,则必须:在Build Command文本框中输入适当的命令(例如,make –f  make_it_all)。

编译成功之后,运行应用程序。 所有用于运行和调试的选项都位于主Eclipse菜单的Run菜单下。

1.1.5文档帮助环境

在Linux下开发应用程序时,手册页(manpage)是主要的参考信息来源。手册页中存放的是参考信息,对于每一条shell命令、系统调用、库函数、配置文件和系统的守护程序,都有相关的一页对其进行说明。

手册页分为八个部分:

第1部分:shell命令和用户级程序;                                                                                                       第2部分:系统调用相关文档;                                                                                                                            第3部分:C和C++库函数和宏调用相关文档;                                                                                                      第4部分:在内核模块、/dev目录、/proc等目录中的特殊文件和设备的相关文档;                           第5部分:系统的不同文件格式;                                                                                                          第6部分:因历史原因而包含的游戏相关文档;                                                                                    第7部分:有关语言或小语言的文档;                                                                                                     第8部分:守护程序或者其他系统管理员命令的相关文档。

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第2张图片

NAME字段:显示了可执行文件的名称和对其功能的简短解释

SYNOPSIS字段:显示了可执行文件的常用方法,如要声明的选项和它支持的输入类型(文件或数值)。

DESCRIPTION字段:显示了和文件或可执行文件相关的可用选项和数值

See Alse:显示了相关的术语、文件和程序。

1.2常用编辑器

常用的编辑器有很多,比如图形模式下gedit、kwrite、OpenOffice文本模式下VIM、Emacs和nanoVIM和Emacs是我们在Linux下最常用的两个编辑器。

1.2.1VIM编辑器

VIM编辑器是Linux最基本的文本编辑工具,VIM编辑器是创建和编辑简单文档最高效的工具。

1.VIM的模式

可有6种,为避免初学者搞混,一般分成3种:

一般模式:进入VIM就是处于一般模式,只能通过按键向编辑器发送命令,不能输入文字。这些命令可能是移动光标的命令,也可能是编辑命令或寻找替换命令。

编辑模式:在一般模式下按i,此时可以输入文字,写你的文章,按Esc就又回到一般模式。

命令模式:在一般模式下按:就会进入命令模式,左下角会有一个冒号出现,此时可敲入命令并执行。按Esc回到一般模式。

2.VIM的启动保存和退出

编写文件:进入VIM后,按i进入编辑模式,就可以编写文件了。通过方向键控制光标的移动,退格键可消去光标前一个字母,若是中文的话则消去一个字。Del键可删除光标所在处的字母(或汉字)。

:w保存文件

:q退出

:wq存盘并退出

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第3张图片

3.光标快速移动

当VIM处于一般模式下时,我们可以用下面的一些键位来快速移动光标:

J 向下移动一行
K 向上移动一行
g 向左移动一个字符
I 向右移动一个字符
ctrl+b 向上移动一屏
ctrl+f 向下移动一屏
向上箭头 向上移动
向下箭头 向下移动
向左箭头 向左移动
向右箭头 向右移动

 对于j,k,l和h键,还能在这些动作命令前面加上数字,比如3j,表示向下移动3行。

4.文本的插入

注意:进行此类操作前,VIM应处于一般模式,操作后VIM处于编辑模式:

i 在光标之前插入
I 在光标所在行的行首插入
a 在光标之后插入
A 在光标所在行的行末插入
o 在光标所在的行的下面插入一行
O 在光标所在行的上面插入一行
s 删除光标后的一个字符,然后进入插入模式
S 删除光标所在的行,然后进入插入模式

5.文本内容的删除操作

注意:进行此类操作前后VIM都处于一般模式;

x 删除一个字符
#x 删除几个字符,#代表数字
dw 删除一个单词
#dwd 删除几个单词,比如3dw表示删除三个单词
dd 删除一行
#dd 删除多行,比如3dd表示删除光标行及光标的下两行
d$ 删除光标到行尾的内容
J 清除光标所处的行与下一行间的空格,把光标行和下一行接在一起

6.恢复修改及恢复删除操作

u 恢复修改及恢复删除操作;进行此操作前,VIM应处于一般模式,操作后VIM仍处于一般模式。

7.复制和粘贴的操作

其实删除也带有剪切的意思,当删除文字后,按shift+p键就把内容贴在原处,然后再移动光标到某处,再按p(在光标之后粘贴)或shifI+p(在光标之前粘贴)就能贴上了。

p        在光标之后粘贴;

shift+p        在光标之前粘贴。

8.查找

首先进入命令模式;再输入/或?就可以使用查找功能了。

/ 要查找的单词,正向查找,按n键把光标移动到下一个符合条件的地方;

?要查找的单词,反向查找,~shift+n键,把光标移动到下一个符合条件的地方;

举一例,比如想在一个文件中找到swap单词,应该这样做:        

首先按Esc键,进入命令模式,然后输入;        

/swap        

或        

?swap        

此时,VIM会以高亮度显示找到的词语,并把光标定位到词语所在行。

9.替换

按Esc键进入命令模式;

:s/SEARCH/REPLACE/g   注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;

:%s SEARCH/REPLACE    注:把文档中所有SEARCH替换成REPLACE; :#,#s/SEARCH/REPLACE/g  注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE在这里,g表示全局查找;我们注意到,就是没有替换的地方,也会把SEARCH高亮显示

举例说明,比如有一篇文档要修改,我们把光标所在的行,把所有单词the,替换成THE, :s/the/THE/g

我们把整篇文档中所有的the都替换成THE,

 :%s/the/THE

我们仅仅是把第1行到第10行中的the,替换成THE,

 :1,10 s/the/THE/g

10.关于行号 

在命令模式下,输入set number,就会在每行的行首显示出行号;

如果想了解更多,请查找man或help:man vim或vim -help

1.2.2Emacs编辑器

1.概念介绍

(1)缓冲区buffer

缓冲区就是一块用来保存我们输入的东西的内存区域。在Emacs里,一切都是在内存中进行,直到按下C-s C-x来保存,文件才会被改变,这是一个普遍的文本保存策略,几乎所有的文本编辑器都是这样工作的。

(2)窗口frame

窗口不是Window,它是指你所编辑的文本被显示的区域,这一点类似于你在UltraEdit里打开的各个文件所在的小窗口。

(3)模式mode

模式是Emacs里最重要的概念,Emacs的强大功能基本上都是由各种模式提供的,常用的有C/C++模式、shell模式、Perl模式、SGML/HTML模式等等。

2.文件缓冲区和窗口操作

首先,我们可以在Emacs里同时编辑多个文件。

可以用C-x3垂直分割屏幕,分成左右两个区域。

窗口和缓冲区的概念是完全不同的,因此我们可以“关闭”窗口,而非“关闭’’缓冲区,让它暂时从我们的视线里消失。这相当于图形环境下的“最小化窗口”。使用C-x0关闭当前窗口,使用C-x1关闭当前窗口以外的其他窗口

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第4张图片

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第5张图片 

3.简单的光标移动操作 

从当前位置出发,移动光标的命令如下图所示:(C表示ctrl键,M表示alt键);

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第6张图片

4.插入与删除 

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第7张图片 

5.取消动作

C -x u会把一个命令所造成的改变取消掉;

6.查找和替换1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第8张图片

除了作为文本编辑器外,Emacs还集成了万维网浏览器、邮件阅读器、ftp、telnet、新闻组阅读器、版本控制系统等等。Emacs的集成功能实在是太多了,这里不再讨论。

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境_第9张图片​​​​​​​

你可能感兴趣的:(嵌入式,操作系统operating,sys,linux,运维,服务器,嵌入式,操作系统)