分享
分享赚钱 收藏 举报 版权申诉 / 75

类型第1章 嵌入式linuxC语言开发工具.ppt

  • 上传人:dreamzhangning
  • 文档编号:3654945
  • 上传时间:2018-11-15
  • 格式:PPT
  • 页数:75
  • 大小:3.69MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第1章 嵌入式linuxC语言开发工具.ppt
    资源描述:

    1、课程目标:本课程将嵌入式系统中经常用到的C编程技巧与概念介绍给大家,并且能在Linux下使用C语言编写一些实际的应用程序先修课程:C语言编程(我们假设同学门已经了解基本的C语法,并至少在一个编译器环境中编写过C语言,虽然我们在课程中有4个小时左右的C语言复习)学时分配:总学时48小时, 其中授课24小时,实验(Project)24小时要求学生独立完成一个中等规模的C语言项目。,(1)C程式设计语言 (The C Programming Language )作者:Brian W.Kernighan, Dennis M.Ritchie 简介:本书是由C语言的设计者Brian W. Kernigha

    2、n和Dennis M. Ritchie编写的一部介绍标准C语言及其程式设计方法的权威性经典著作。一本必读的程式设计语言方面的参考书。(2)C Primer Plus中文版(C Primer Plus)作者:Stephen Prata 简介:作为核心计算机技术成熟、完整的参考书籍,Primer Plus系列历经十数年不衰,通过学习C Primer Plus(第五版)中文版,你将奠定坚实的C编程基础。(3)C和指针(Pointers on C)作者:Kenneth A.Reek 简介:本书提供和C语言编程相关的全方面资源和深入讨论。全书覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结

    3、构和联合等几乎所有重要的C编程话题。书中给出了非常多编程技巧和提示。,参考书籍和资料- C语言初级教材,(1)C陷阱和缺陷(C Traps and Pitfalls)作者:Andrew Koenig 简介:作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程式员具有珍贵价值的经典著作。本书的出发点不是要批判C语言,而是要帮助C程式员绕过编程过程中的陷阱和障碍。(2)C专家编程(Expert C Programming )作者:Perter Van Der LinDen简介:展示了最优秀的C程式员所使用的编码技巧。 书中C的历史、语言特性、声明、数组、

    4、指针、链接、运行时、内存及怎么进一步学习C+等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程式员具有非常高的实用价值。(3)C语言编程常见问题解答(C Programming : Just the Faqs )作者:Paul S.R.Chisholm 等 简介:这是一本专门解答c语言编程常见问题的著作。书中所覆盖的内容相当广泛,并附有大量鲜明的例子。,参考书籍和资料- C语言进阶书籍,(1) C/C+嵌入式系统编程(Programming Embedded Systems in C and C+)作者:Michael Barr 简介:本书中的技术和范例代码均可直接应用于各

    5、种实际的嵌入式系统项目。有过嵌入式系统研发经验的读者,也将从中获益匪浅。(2) 嵌入式实时操作系统C/OS-II(MicroC/OS-II The Real-Time Kernel)作者:Jean J.Labrosse 简介:C/OSII是源码公开的实时内核,是专为嵌入式应用设计的。通过对C/OSII原始码的分析和描述,讲述了多任务实时的基本概念、竞争和调度算法、任务间同步和通信、存储和定时的管理及怎么处理优先级反转问题;介绍怎么将C/OSII移植到不同CPU上,怎么调试移植代码。(3) 嵌入式系统构件(Embedded Systems Building Blocks )作者: Jean J.

    6、Labrosse 简介:本书介绍了构建嵌入式系统的一些通用模块,如键盘扫描器、显示器接口、计量器和输入/输出。大部分代码都是用可移植的C语言编写。,参考书籍和资料-嵌入式编程书籍,1. 会C语法与会用C语言写程序是两个概念2. C的灵活性以及由此而产生的陷阱非常非常多3. The Most Beautiful Language and Most Dangerous Language in the Programming World!,学习C语言的误区,第1章 嵌入式Linux C语言开发工具,本章内容,1.1 嵌入式Linux下C语言概述 1.2 嵌入式Linux编辑器vi的使用 1.3 嵌入

    7、式Linux编译器GCC的使用 1.4 嵌入式Linux调试器GDB的使用 1.5 make工程管理器 1.6 Eclipse集成开发环境 本章小结,1.1 嵌入式Linux下 C语言概述,1.1.1 C语言简史 1.1.2 C语言特点 1.1.3 嵌入式Linux C语言编程环境,1.1.1 C语言简史,C语言最初是美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出来的,此时的C语言只是为了描述和实现UNIX操作系统的一种工作语言。在一段时间里,C语言还只在贝尔实验室内部使用。1975年,UNIX第6版公布后,C语言突出的优点引起人们的普遍注意。1977年出现了可移植的C语言。19

    8、78年UNIX第7版的C语言成为后来被广泛使用的C语言版本的基础,被称为标准C语言。1983年,美国国家标准化协会(ANSI)根据C语言问世以来的各种版本,对C语言进行发展和扩充,并制定了新的标准,称为ANSI C。1990年,国际标准化组织ISO制定了ISO C标准,目前流行的C语言编译系统都是以它为标准的。,1.1.2 C语言特点,C语言是结构化的语言 采用代码及数据分隔的方式,使程序的各部分独立 以函数的形式提供给用户,方便调用C语言是模块化的语言 减少重复编程,减少劳动量,提高编程效率程序可移植性好 不同机器上的编译程序大约有80%的代码是公共的 C语言运算符丰富、代码效率高 C语言共

    9、有34种运算符,使用各种运算符可以实现在其他高级语言中难以实现的运算。,1.1.3 嵌入式Linux C语言编程环境,编辑器 常用的编辑器有vi(vim)和Emacs 编译链接器 常用的编译器是GCC编译器 调试器 GDB 项目管理器 项目管理器make,1.2 嵌入式Linux 编辑器vi的使用,1.2.1 vi的基本模式 1.2.2 vi的基本操作 1.2.3 vi的使用实例分析,1.2.1 vi (vim)的基本模式,命令行模式(Command Mode) 在该模式下用户可以输入命令来控制屏幕光标的移动,字符、单词或行的删除,移动复制某区段,也可以进入到底行模式或者插入模式下。 插入模式

    10、(Insert Mode) 用户只有在插入模式下才可以进行字符输入,用户按Esc键可回到命令行模式下。 底行模式(Last Line Mode) 在该模式下,用户可以将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、显示行号等。这一模式下的命令都是以“:”开始。,1.2.2 vi (vim)的基本操作,进入与离开 进入vi可以直接在系统提示符下键入vi 文档名称,vi可以自动载入所要编辑的文档或是创建一个新的文档。如在shell中键入vi hello.c(新建文档)即可进入vi画面. 进入vi后屏幕最左边会出现波浪符号,凡是有该符号就代表该行目前是空的。此时进入的是命令行模式。 要离开v

    11、i可以在底行模式下键入“:q”(不保存离开),“:wq”(保存离开)则是存档后再离开(注意冒号)。,在vi中打开/新建文档,17,1.2.2 vi (vim)的基本操作,在vi中退出文档,1.2.2 vi (vim)的基本操作,vi中3种模式的切换 (1)命令行模式、底行模式转为插入模式,vi中3种模式的切换 (续)(2)插入模式转为命令行模式、底行模式从插入模式转为命令行模式、底行模式比较简单,只需使用Esc键即可。(3)命令行模式与底行模式转换命令行模式与底行模式间的转换不需要其他特别的命令,而只需要直接键入相应模式中的命令键即可。,1.2.2 vi (vim)的基本操作,vi的删除、修改

    12、与复制,1.2.2 vi (vim)的基本操作,vi的光标移动,1.2.2 vi (vim)的基本操作,vi的查找与替换,1.2.2 vi (vim)的基本操作,vi的文件操作指令,1.2.2 vi (vim)的基本操作,1.2.3 vi (vim)的使用实例分析,vi使用实例内容,(1)在/root目录下建一个名为vi的目录。 (2)进入vi目录。 (3)将文件/etc/inittab复制到当前目录下。 (4)使用vi编辑当前目录下的inittab。 (5)将光标移到该行。 (6)复制该行内容。 (7)将光标移到最后一行行首。 (8)粘贴复制行的内容。 (9)撤销第9步的动作。 (10)将光

    13、标移动到最后一行的行尾。,(11)粘贴复制行的内容。 (12)光标移到“si:sysinit:/etc/rc.d/rc.sysinit”。 (13)删除该行。 (14)存盘但不退出。 (15)将光标移到首行。 (16)插入模式下输入“Hello,this is vi world!”。 (17)返回命令行模式。 (18)向下查找字符串“0:wait”。 (19)再向上查找字符串“halt”。 (20)强制退出vi,不存盘。,vi使用实例解析,(1)mkdir /root/vi (2)cd /root/vi (3)cp /etc/inittab ./ (4)vi ./inittab (5)17(命

    14、令行模式) (6)yy (7)G (8)p (9)u (10)$ (11)P (12)21G,(13)dd (14):w(底行模式) (15)1G (16)i 并输入“Hello,this is vi world!”(插入模式) (17)Esc (18)/0:wait(命令行模式) (19)?halt (20):q!(底行模式),1.2.3 vi (vim)的使用实例分析,1.3嵌入式Linux 编译器GCC的使用,1.3.1 GCC概述 1.3.2 GCC编译流程分析 1.3.3 GCC警告提示 1.3.4 GCC使用库函数 1.3.5 GCC代码优化,1.3.1 GCC概述,GCC除了能支

    15、持C语言外,目前还支持Ada语言、C+语言、Java语言、Objective C语言、PASCAL语言、COBOL语言,以及支持函数式编程和逻辑编程的Mercury语言等 GCC的编译流程分为了4个步骤,分别为预处理(Pre-Processing)编译(Compiling)汇编(Assembling)链接(Linking),1.3.2 GCC编译流程分析,GCC使用的基本语法为:gcc option | filename预处理阶段gcc E o 目标文件 编译文件 选项“-E”可以使编译器在预处理结束时就停止编译选项“-o”是指定GCC输出的结果。编译阶段 gcc S o hello.s he

    16、llo.i 选项“-S”能使编译器在进行完编译之后就停止,汇编阶段 gcc c hello.s o hello.o 选项“-c”把编译阶段生成的“.s”文件生成目标文件 “.o”链接阶段 gcc hello.o o hello 可以生成可执行文件,1.3.2 GCC编译流程分析,1.3.3 GCC警告提示,Wall类警告提示,1.3.3 GCC警告提示,Wall类警告提示,1.3.3 GCC警告提示,Wall类警告提示,非Wall类警告提示 (1)“-ansi” 该选项强制GCC生成标准语法所要求的告警信息,尽管这还并不能保证所有没有警告的程序都是符合ANSI C标准的。 (2)“-pedan

    17、tic” 该选项允许发出ANSI C标准所列的全部警告信息,同样也不能保证所有没有警告的程序都是符合ANSI C标准的。,1.3.3 GCC警告提示,Linux函数库介绍 Linux中函数库包括两类:静态库和共享库。 静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库是在程序开始运行时被加载。 系统中可用的库都安装在/usr/lib和/lib目录下。库文件名由前缀lib和库名以及后缀组成。根据库的类型不同,后缀名也不一样。,1.3.4 GCC使用库函数,相关路径选项 (1)“-I ”GCC使用缺省的路径来搜索头文件,如果想要改变搜索路径,用户可以使用“-I”选项。“-I”选项可以

    18、在头文件的搜索路径列表中添加目录。这样,GCC就会到指定的目录去查找相应的头文件。(2)“-L ”选项“-L ”的功能与“-I ”类似,其区别就在于“-L”选项是用于指明库文件的路径。 gcc hello_sq.c L/root/workspace/gcc/lib lsunq o hello_sq,1.3.4 GCC使用库函数,使用不同类型链接库 使用不同类型的链接库的方法很相似,都是使用选项是“-l”(注意这里是小写的“L”)。该选项是用于指明具体使用的库文件。由于在Linux中函数库的命名规则都是以“lib”开头的,因此,这里的库文件只需填写lib之后的内容即可。gcc -o dynami

    19、c -L /root/lq/testc/lib/dynamic.o -lmydynamic,1.3.4 GCC使用库函数,1.3.5 GCC代码优化,GCC可以对代码进行优化,它通过编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。 虽然优化选项可以加快代码的运行速度,但对于调试而言将是一个很大的挑战。因为代码在经过优化之后,原先在源程序中声明和使用的变量很可能不再使用,控制流也可能会突然跳转到其他的地方,循环语句也有可能因为循环展开而变得到处都有,所有这些都将使调试工作异常艰难。,1.4 嵌入式Linux 调试器GDB的使用,1.4.1 GDB使用实例 1.4.2设置/删除

    20、断点 1.4.3数据相关命令 1.4.4调试运行环境相关命令 1.4.5堆栈相关命令,1.4.1 GDB使用实例,进入GDB gdb test 查看文件l 设置断点 b 6 查看断点处情况 info b 运行代码 r 查看变量值 p n / p i 观察变量 watch n 单步运行 n 程序继续运行 c 退出GDB q,1.4.2设置/删除断点,1.4.2 设置/删除断点,1.4.3 数据相关命令,1.4.3 数据相关命令,1.4.4调试运行环境相关命令,1.4.5堆栈相关命令,1.5 make工程管理器,1.5.1 Makefile基本结构 1.5.2 Makefile变量 1.5.3 M

    21、akefile规则 1.5.4 make使用,1.5.1 Makefile基本结构,在一个Makefile中通常包含如下内容。 需要由make工具创建的目标体(target),目标体通常是目标文件、可执行文件或是一个标签。 要创建的目标体所依赖的文件(dependency_file)。 创建每个目标体时需要运行的命令(command)。 它的格式为:target: dependency_filescommand,1.5.2 Makefile变量,Makefile中常见预定义变量,Makefile中常见自动变量,1.5.2 Makefile变量,1.5.3 Makefile规则,隐式规则 隐含规

    22、则能够告诉make怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。make会自动搜索隐式规则目录来确定如何生成目标文件 make的隐式规则指出:所有“.o”文件都可自动由“.c”文件使用命令“$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c o file.o”生成,隐式规则,Makefile中常见隐式规则目录,1.5.3 Makefile规则,模式规则 模式规则不同于隐式规则,是用来定义相同处理规则的多个文件的,模式规则能引入用户自定义变量,为多个文件建立相同的规则,简化Makefile的编写。模式规则的格式类

    23、似于普通规则,这个规则中的相关文件前必须用“%”标明,然而在这个实例中,并不能使用这个模式规则,1.5.3 Makefile规则,1.5.4 make使用,1.6 Eclipse集成开发环境,工作台(workbench) :提供了一个或多个透视图。,1.6 Eclipse集成开发环境,透视图(perspective) :工作台中的一组视图和编辑器。每个透视图包括一组不同的视图,它定义了视图在工作台中的布局。,eclipse的使用,# eclipse,eclipse的使用,选择File New Project C Project,eclipse的使用,设定工程名称,选择工具链,eclipse的使

    24、用,创建了新的工程,eclipse的使用,添加源文件,eclipse的使用,编辑代码,eclipse的使用,编译工程,eclipse的使用,运行程序,eclipse的使用,右键单击编辑框最左边浅黄色区域,设置断点,eclipse的使用,调试程序,eclipse的交叉编译和调试,修改工程属性中的编译器、链接器和汇编器,eclipse的交叉编译和调试,修改工程属性中的编译器、链接器和汇编器,eclipse的交叉编译和调试,修改工程属性中的编译器、链接器和汇编器,eclipse的交叉编译和调试,设置完成后重新编译,eclipse的交叉编译和调试,在目标平台上运行起编译好的程序,等待主机端调试器的连接,eclipse的交叉编译和调试,主机端eclipse里设置调试选项,eclipse的交叉编译和调试,指定调试器为arm-linux-gdb,eclipse的交叉编译和调试,设定通过网络进行交叉调试,eclipse的交叉编译和调试,开始交叉调试,本章小结,熟练使用开发工具是进行嵌入式Linux C语言开发的第一步。 详细介绍了嵌入式Linux C语言开发常见的编辑器vi、编译器GCC、调试器GDB、工程管理器make和集成开发环境eclipse。,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第1章 嵌入式linuxC语言开发工具.ppt
    链接地址:https://www.docduoduo.com/p-3654945.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开