嵌入式开发初探_第1页
嵌入式开发初探_第2页
嵌入式开发初探_第3页
嵌入式开发初探_第4页
嵌入式开发初探_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.1嵌入式Linux软件开发工具下面将介绍一些在开发嵌入式Linux应用软件时常用的工具,包括编辑工具vi、编译工具gcc、MakeFile和调试工具gdb。3.1.1使用vi编辑器Vi,作为UNIX世界中的一个通用全屏文本编辑器,可以说几乎任何一台UNIX机器都会提供这个软件。当然,作为UNIX家族的一员,Linux也不例外。尽管在Linux下已经开发了许多更新更有用的文本编辑器,但是这些附加的安装软件并不一定在每台机器上都提供。因此,如果我们掌握了vi编程,我们就可以轻松地在各种机器上操作。这个编辑器的另一个优点是所有的命令按钮都在手指的范围内,所以你不用离开主键盘就可以输入所有的命令。

2、vi的原意是“视觉”,是一个即时反应的编辑程序。值只需执行 vi 指令就可以进入vi的编辑环境。Vi有三种状态,即可视命令模式、冒号命令模式和文本编辑模式。一般来说,当进入虚拟仪器时,你将首先进入可视化命令模式,这是虚拟仪器启动的默认模式。用户在此模式下输入的任何内容都被视为编辑命令。如果您按下“I”键,您可以进入插入模式并从光标左侧输入文本;如果您按下“A”键,您将进入添加模式,您可以在光标右侧输入文本。在冒号命令模式下,所有命令都应该以“:”开头,输入字符系统应该作为命令处理,例如:q表示退出,w表示保存。进入文本编辑模式,此时用户可以编辑所有文本。在文本编辑模式下,您可以通过按Esc键返

3、回到命令状态。无论是创建新文件还是修改旧文件,都可以使用vi,所需说明如下:vi filemane如果文件是新的,您将在屏幕底部看到一条消息,告诉用户正在创建一个新文件。输入命令:vi /tmp/test。如果是新文件,您应该会看到如图3.1.1所示的信息:图3.1.1使用vi命令创建文件对于vi创建的案例文件,行首的曲折“”表示文件行是空的。如果文件已经存在,vi将显示文件的前24行内容。此时,用户可以使用以下命令进入编辑模式:命令按钮“I”:在光标前插入文本,光标后的文本随添加的文本向后移动。命令按钮“I”:在光标所在行的开头插入文本。命令按钮“a”:在光标位置后面添加文本,光标后面的文本

4、随着添加的文本向后移动。命令按钮“a”:在光标所在行的末尾添加文本。命令按钮“o”:在光标所在行的下方新建一行,并进入编辑状态。命令按钮“o”:在光标上打开一个新行,进入编辑状态。一些基本命令解释如下:(1)光标命令。上下左右光标移动命令。虽然键盘右侧的四个光标键也可以在L,inux中使用,但这四个命令非常有用,因为这四个键是右手放在键盘上的基本位置。跳跃命令。n是行数。该命令会立即将光标跳转到指定的行。报告光标所在的行数和列数。让光标向前或向后跳过一个单词。o:将光标移动到该行的前面,这相当于功能键Home O$:将光标移动到行的后面,相当于功能键结束。ctrl+d:光标向下移动半页。ctr

5、l+f:光标向下移动一页。Ctrl lu.将光标上移半页。Ctrl b:光标上移一页。h:移到屏幕的第一行。m:移到屏幕的中间线。l:移到屏幕的最后一行。(2)编辑命令。我,我,我,我:在解释如何进入编辑模式时已经介绍过了。r,r: r修改光标所在的字符,后跟要修改的字符。r进入替换状态,新数据覆盖原始数据,直到按Esc键返回命令模式。Cw,dw:更改(替换)/删除光标处单词的命令(c=更改,d=删除)。x,x:删除光标后面/前面的字符。D$,d0:从光标到行尾/行首删除命令。删除光标所在的行。Dw:删除光标处的单词。删除光标处的最后N个字符。删除光标处的前N个字符。删除光标处的最后n个单词。

6、恢复之前的操作相当于在Word工具中的撤销操作。y:复制操作(.美国佬)。p:粘贴操作(正常)。(3)查找/替换命令。/string ,字符串:从光标向前或向后查找相应字符串的命令。n:在同一方向重复检索。n:反方向重复搜索。char替换光标处的字符。Rtext:用文本替换光标处的字符。用文本替换光标处的单词。Ctext:将光标替换为行尾的文本。抄送:保留整行空白,但保持光标位置,并开始输入。:% s/string 1/string2/g:将整个文件中的“string 1”替换为“string 2”。下面的示例解释了查找/替换命令的使用:/hello:期待你好的角色。?再见:回头看看再见这个词

7、。/the*foot:向前看单词“The”所在的行,以及“The”之后某个点的foot词汇表。?pPprint:向后查找Print或Print单词(注意在,inux中大写和小写之间有严格的区别)。:% s/Local/s/Remote/g:将文件中每一行的本地替换为远程。(4)保存/退出命令。修改文件时,归档并退出指定的文件非常重要。在vi中,当使用存档或退出命令时,按冒号(:)进入冒号命令模式。用户可以看到冒号“:”出现在屏幕的左下方,表示vi已经进入冒号命令模式,在此模式下可以完成存档或退出。以下是这种模式下的一些常见命令。:q!放弃任何更改退出vi,即强制退出。:w:存档不存在。:w!强

8、制归档只读文件。:wq:存档并退出vi。: x:与wq相同。注意:在编辑模式下,您不能输入指令。您必须按Esc键才能返回命令模式。如果用户不知道他处于什么状态,他也可以按Esc键,无论他处于什么状态,他都将返回到命令模式。Vi也可以同时编辑多个文件。它的使用方法是:vi文件列表。如果同时编辑两个文件,将文本复制到一个文件中,然后粘贴到另一个文件中,命令如下:Vi文件1文件2,输入年,输入(复制文件L光标处的行):n,输入(切换到文件2(n=下一个)或按Ctrl ww在两个文件之间切换)输入(将复制的行粘贴到文件2的光标处):n,输入(切换回文件1)如果您想在vi执行期间执行shell,请使用感

9、叹号(!)将执行系统指令。例如,在vi的命令状态下,列出当前目录的内容,您可以输入::ls另一方面,用户可以在主目录中创建exrc环境文件,使用set设置选项,并阅读中的说明和设置。每次虚拟仪器被调用。以下是exrc环境文件的应用示例:设置wrapmarging=8设置showmode设置自动3.1.2 gcc编译器Linux发行版包含许多软件开发工具,其中许多工具用于C和C应用程序开发。在Linux上可用的C编译器是GNU C编译器,它可以通过安装自由软件基金会的GPL条款自由发布,并且可以在Linux发行盘上找到。“gcc”是GNU C编译器的全称。这个编译器由C、C和Objective

10、C组成,它们可以编译自己的源程序。Gcc是这个编译器的通用名称,它强调编译c程序时使用的名称。当强调C程序的编译时,使用的编译器名称是gGcc编译器不仅可以编译运行在Linux操作系统和Linux本身下的应用程序,还可以交叉编译运行在其他CPU上的程序。可交叉编译的中央处理器(或数字信号处理器)涵盖了几乎所有知名的商业产品。用于嵌入式应用的知名处理器包括英特尔的i386、英特尔960、AMD29K、ARM、M32、MIPS、M68K、酷火、PowerPC、68HC11/12、ti的TMS32等。详细名单可以在/reading.的网站上找到GNU gcc编译器是

11、一套完整的跨c编译器,包括:交叉编译器。交叉装配工具。拆卸工具0bidump c,连接工具ld。调试工具gbd。您可以使用批处理文件。MakeFile将上述工具组合成一个方便的命令行形式。用gcc编译C程序生成的可执行文件有时看起来是一步完成的,但实际上要经过以下四个步骤:(1)预处理(预处理)。这一步需要分析各种命令,如#define、#include、#ifdef等等。Gcc调用cpp程序进行预处理。(2)汇编。在这一步中,汇编语言将根据输入文件生成。由于汇编程序通常被立即调用,它的输出通常不保存在文件中,gcc调用ccl进行编译。(3)组装。在这一步中,汇编语言被用作生成目标文件的输入。

12、o扩展。Gcc要求进行组装工作。(4)链接。在这一步中,每个对象文件。o放在可执行文件的适当位置,程序引用的函数也放在可执行文件中。Gcc调用链接器ld来完成最终任务。gcc命令的基本用法是gcc选项文件名。命令行选项指定的操作将在命令行上的每个给定文件上执行。例如:gcco Prog main . c sub 1 . c sub 2 . c sub 3 . c .其中,“-o prog”指定输出可执行文件名为prog。如果-o参数未知,gcc将使用默认的可执行文件名a.out。如果您想单独编译每个源文件并最终连接,您可以调用以下命令:gcc -c mian.cgcc -c subrl.cgc

13、c-c sub 2 . cgcc -c sunbr3.cgcc-o Prog main . o sun brl . o sun br2 . o sun br3 . o其中,-c选项意味着编译后的目标文件不连接,最后所有的目标文件连接在一起形成一个可执行文件。由于最后一个命令的输入是目标文件,不需要编译和连接,gcc只调用连接工具ld。gcc有许多命令选项,但几个常用选项是:-c .仅预处理、编译和汇编源程序,不连接。编译器将生成一个带有后缀的目标文件。o对于每个源程序。-o EXFILE:确保输出文件是EXFILE。如果未指定EXFILE,默认输出是可执行文件a.out。-Dmacro或-Dm

14、acro=defn:它的功能类似于源代码程序中的#define。示例:% gcccd have _ gdbm _ d help file= help cdict . c其中,第一个D选项定义了宏HAV _ GDBM,你可以在程序中使用#ifdef来检查它是否被设置;第二个D选项将宏HELPH-FILE定义为字符串“帮助”(因为反斜杠,引号实际上已经成为宏定义的一部分),这对于控制程序打开哪个文件非常有用。O:优化程序编译。编译器试图减少编译程序的长度和执行时间,但是它的编译速度比没有优化的慢,并且需要更多的内存。编译嵌入式应用软件时,如果主机性能良好,可以打开该选项。-O2:允许优化优于-O,

15、编译速度较慢,但结果程序的执行速度较快。-g:告诉gcc生成调试信息,供GNU调试器用于调试程序。Gcc提供了许多其他c编译器所没有的特性,也就是说,g和O(生成优化代码)可以在gcc中一起使用。这非常有用,因为您可以在尽可能接近最终产品的地方调试代码。当同时使用这两个选项时,必须清楚一些编写的代码在优化过程中被gcc改变了。-pg。该选项告诉gcc向程序中添加额外的代码,并在执行期间为gprof生成分析信息,以显示程序的耗时情况。目录目录被添加到搜索头文件的目录列表中,并优先于gcc中的默认搜索目录。如果有多个选项,请按以下顺序搜索。命令行中的选项。目录可以是相对路径,例如-1./Inc .

16、3.1.3编写制作文件大多数在Linux上写程序的人都接触过Makefile,尤其是那些用C语言开发程序的人。用make开发和编译程序很方便,但是编写Makefile就不那么简单了。简而言之,Makefile是由目标、关联和动作组成的一系列规则。Make将根据Makefile的规则决定如何编译和链接程序。实际上,make不仅可以编译和链接程序,还可以自动下载源程序包,解压缩,修补和设置它们,然后编译并安装到系统中。如果存在适当的MakeFile,在更改一些源文件后,所有必要的重新编译都可以通过使用外壳下的make命令来完成。Make程序使用MakeFile中的数据和每个文件的最后更改时间来确定哪些文件需要更新。make程序使用MakeFile中定义的命令来更新需要更新的文件。至于要更新哪个MakeFile,可以在make命令中使用-f选项来指定。如果没有指定,make程序将按照以下顺序在当前目录中查找以下文件:生成文件、生成文件和生成文件。最好使用MakeFile,因为它的第一个字母是大写的,而且它通常列在文件目录中所有文件的前面,这很容易找到。1.写作规则以下是组成生成文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论