• 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常用的基本命令功能、语法结构和用法示例

    参考用书: 金伟正,嵌入式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部分:守护程序或者其他系统管理员命令的相关文档。

    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存盘并退出

    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关闭当前窗口以外的其他窗口

    3.简单的光标移动操作 

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

    4.插入与删除 

    5.取消动作

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

    6.查找和替换

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

    ​​​​​​​

    (2022-11-25 10:50:24发布)

  • 相关阅读:
    为什么要用NoSQL
    设计模式-命令模式
    AWS无服务器 应用程序开发—第十四章 实战1
    asterisk 使用php脚本连接oralce数据库 通过AMI端口实现预拨号(批量外呼)
    【无标题】Delayed延迟队列不工作
    【MyCat简单介绍】
    [黑马程序员SpringBoot2]——基础篇1
    uniApp常见面试题-附详细答案
    spring boot 如何解决 150476 Cookies Issued Without User Consent
    【网络】内网穿透方案&FRP内网穿透实战(基础版)
  • 原文地址:https://blog.csdn.net/m0_57656758/article/details/127816772