您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 第3章、Linux下C编程基础
嵌入式学院—华清远见旗下品牌:嵌入式学院—华清远见旗下品牌:《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:语言编程的基本技能。学习了本章后,读者能够掌握如下内容。熟悉Linux系统下的开发环境熟悉vi的基本操作熟练emacs的基本操作熟悉gcc编译器的基本原理熟练使用gcc编译器的常用选项熟练使用gdb的调试技术熟悉makefile基本原理及语法规范熟练使用autoconf和automake生成makefile《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:的辅助开发而编写的,它是在B语言的基础上开发出来的。尽管C语言不是专门针对UNIX操作系统或机器编写的,但它与UNIX系统的关系十分紧密。由于它的硬件无关性和可移植性,使C语言逐渐成为世界上使用最广泛的计算机语言。为了进一步规范C语言的硬件无关性,1987年,美国国家标准协会(ANSI)根据C语言问世以来各种版本对C语言的发展和扩充,制定了新的标准,称为ANSIC。ANSIC语言比原来的标准C语言有了很大的发展。目前流行的C语言编译系统都是以它为基础的。C语言的成功并不是偶然的,它强大的功能和它的可移植性让它能在各种硬件平台上游刃自如。总体而言,C语言有如下特点。(1)C语言是“中级语言”。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。(2)C语言是结构化的语言。C语言采用代码及数据分隔,使程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便地调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。(3)C语言功能齐全。C语言具有各种各样的数据类型,并引入了指针的概念,可使程序效率更高。另外,C语言也具有强大的图形功能,支持多种显示器和驱动器,而且计算功能、逻辑判断功能也比较强大,可以实现决策目的。(4)C语言可移植性强。C语言适合多种操作系统,如DOS、Windows、Linux,也适合多种体系结构,因此尤其适合在嵌入式领域的开发。3.1.2Linux下C语言编程环境概述Linux下的C语言程序设计与在其他环境中的C程序设计一样,主要涉及编辑器、编译链接器、调试器及项目管理工具。现在我们先对这4种工具进行简单介绍,后面会对其一一进行讲解。(1)编辑器.Linux下的编辑器就如Windows下的记事本、写字板等一样,完成对所录入文字的编辑功能。Linux中最常用的编辑器有vi(vim)和emacs,它们功能强大、使用方便,深受编程爱好者的喜爱。在本书中,着重介绍vi和emacs。(2)编译链接器。编译是指源代码转化生成可执行代码的过程,它所完成的主要工作如图3.1所示。《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:编译过程可见,编译过程是非常复杂的,它包括词法、语法和语义的分析、中间代码的生成和优化、符号表的管理和出错处理等。在Linux中,最常用的编译器是gcc编译器。它是GNU推出的功能强大、性能优越的多平台编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。(3)调试器调试器并不是代码执行的必备工具,而是专为方便程序员调试程序而用的。有编程经验的读者都知道,在编程的过程当中,往往调试所消耗的时间远远大于编写代码的时间。因此,有一个功能强大、使用方便的调试器是必不可少的。gdb是绝大多数Linux开发人员所使用的调试器,它可以方便地设置断点、单步跟踪等,足以满足开发人员的需要。(4)项目管理器。Linux中的项目管理器“make”有些类似于Windows中Visualc++里的“工程”,它是一种控制编译或者重复编译软件的工具,另外,它还能自动管理软件编译的内容、方式和时机,使程序员能够把精力集中在代码的编写上而不是在源代码的组织上。3.2常用编辑器3.2.1进入viLinux系统提供了一个完整的编辑器家族系列,如Ed、Ex、vi和emacs等。按功能它们可以分为两大类:行编辑器(Ed、Ex)和全屏幕编辑器(vi、emacs)。行编辑器每次只能对一行进行操作,使用起来很不方便。而全屏幕编辑器可以对整个屏幕进《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:行编辑,用户编辑的文件直接显示在屏幕上,从而克服了行编辑那种不直观的操作方式,便于用户学习和使用,具有强大的功能。vi是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具,足以见其生命力之强,而强大的生命力是其强大的功能带来的。由于大多数读者在此之前都已经用惯了Windows平台上的编辑器,因此,在刚刚接触时总会或多或少不适应,但只要习惯之后,就能感受到它的方便与快捷。1.vi的模式vi有3种模式,分别为命令行模式、插入模式及命令行模式。下面具体介绍各模式的功能。(1)命令行模式。用户在用vi编辑文件时,最初进入的为一般模式。在该模式中用户可以通过上下移动光标进行“删除字符”或“整行删除”等操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。(2)插入模式。只有在该模式下,用户才能进行文字编辑输入,用户按[ESC]可键回到命令行模式。(3)底行模式。在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。2.vi的基本流程(1)进入vi,即在命令行下键入“vihello”(文件名)。此时进入的是命令行模式,光标位于屏幕的上方,如图3.2所示。图3.2进入vi命令行模式《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:(2)在命令行模式下键入i进入插入模式,如图3.3所示。可以看出,在屏幕底部显示有“插入”表示插入模式中的输入状态,在该模式下可以输入文字信息。图3.3进入vi插入模式(3)最后,在插入模式中,按“Esc”键,则当前模式转入命令行模式,并在底行行中输入“:wq”(存盘退出)进入底行模式,如图3.4所示。这样,就完成了一个简单的vi操作流程:命令行模式→插入模式→底行模式。由于vi在不同的模式下有不同的操作功能,因此,读者一定要时刻注意屏幕最下方的提示,分清所在的模式。《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:.vi的各模式功能键(1)命令行模式常见功能键如表3.1所示。表3.1vi命令行模式功能键功能键功能i切换到插入模式,在目前的光标所在处插入输入的文字,已存在的文字会向后退a切换到插入模式,并从目前光标所在位置的下一个位置开始输入文字o切换到插入模式,且从行首开始插入新的一行[ctrl]+[b]屏幕往“后”翻动一页[ctrl]+[f]屏幕往“前”翻动一页[ctrl]+[u]屏幕往“后”翻动半页[ctrl]+[d]屏幕往“前”翻动半页0(数字0)光标移到本行的开头G光标移动到文件的最后nG光标移动到第n行$移动到光标所在行的“行尾”nEnter光标向下移动n行/name在光标之后查找一个名为name的字符串?name在光标之前查找一个名为name的字符串x删除光标所在位置的一个字符X删除光标所在位置的前一个字符dd删除光标所在行ndd从光标所在行开始向下删除n行yy复制光标所在行nyy复制光标所在行开始的向下n行p将缓冲区内的字符粘贴到光标所在位置(与yy搭配)u恢复前一个动作(2)插入模式的功能键只有一个,即按“Esc”键可回到命令行模式。(3)底行模式常见功能键如表3.2所示。表3.2vi底行模式功能键功能键功能:w将编辑的文件保存到磁盘中《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:退出vi(系统对做过修改的文件会给出提示):q!强制退出vi(对修改过的文件不作保存):wq存盘后退出:w[filename]另存一个名为filename的文件:setnu显示行号,设定之后,会在每一行的前面显示对应行号:setnonu取消行号显示注意vim是vi的升级版,与vi相比扩展了很多功能且保持与vi的90%相兼容,感兴趣的读者可以查看相关资料进行学习。3.2.2初探emacs正如前面所述,vi是一款功能非常强大的编辑器,它能够方便、快捷、高效地完成用户的任务,那么,在此再次向读者介绍另一款编辑器是否多此一举呢?答案是否定的。因为emacs不仅仅是一款功能强大的编译器,而且是一款融合编辑、编译、调试于一体的开发环境。虽然,它没有VisualStudio一样绚丽的界面,但是它可以在没有图形显示的终端环境下出色的工作,相信追求强大功能和工作效率的用户不会介意它朴素的界面的。emacs的使用和vi截然不同。在emacs里,没有类似于vi的3种“模式”。emacs只有一种模式,也就是编辑模式,而且它的命令全靠功能键完成。因此,功能键也就相当重要了。但emacs却还使用一个不同vi的“模式”,它的“模式”是指各种辅助环境。比如,当编辑普通文本时,使用的是“文本模式(TextMode)”,而当写程序时,使用的则是如“c模式”、“shell模式”等。下面,首先介绍一下emacs作为编辑器的使用方法,以帮助读者熟悉emacs的环境。注意emacs缩写注释:C+chr表示按住Ctrl键的同时键入字符chr。因此,C+f就表示按住Ctrl键同时键入f。M+chr表示当键入字符chr时同时按住Meta或Edit或Alt键(通常为Alt键)。1.emacs安装现在较新版本的Linux(如本书中所用的RedHatEnterprise4AS)的安装光盘中一般都自带有emacs的安装包,用户可以通过安装光盘进行安装(一般在第2张光盘中)。2.启动emacs安装完emacs之后,只需在命令行键入“emacs[文件名]”(若缺省文件名,也可在emacs编辑文件后另存时指定),也可从“编程”→“emacs”打开,如3.5图所示的就是从“编程”→“emacs”打开的emacs欢迎界面。《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:的工作窗口,如图3.6所示。从图中可见,emacs的工作窗口分为上下两个部分,上部为编辑窗口,底部为命令显示窗口,用户执行功能键的功能都会在底部有相应的显示,有时也需要用户在底部窗口输入相应的命令,如查找字符串等。图3.6emacs的工作窗口《嵌入式Linux应用程序开发标准教程》——第3章、Linux下C编程基础嵌入式学院—华清远见旗下品牌:.进入emacs在进入emacs后,即可进行文件的编辑。由于emacs只有一种编辑模式,因此用户无需进行模式间的切换。下面介绍emacs中基本编辑功能键。(1)移动光标。虽然在emacs中可以使用“上”、“下”、“左”、“右”方向键来移动单个字符,但笔者还是建议读者学习其对应功能
本文标题:第3章、Linux下C编程基础
链接地址:https://www.777doc.com/doc-6456923 .html