资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,嵌入式LinuxC语言开发工具,www.embedu.org,课程目标,C语言产生的历史背景 嵌入式Linux下C语言的开发环境 嵌入式Linux下的编辑器vi 嵌入式Linux下的编译器GCC 嵌入式Linux下的调试器GDB 嵌入式Linux下的工程管理器make Eclipse集成开发环境,www.embedu.org,本章内容,1.1 嵌入式Linux下C语言概述 1.2 嵌入式Linux编辑器vi的使用 1.3 嵌入式Linux编译器GCC的使用 1.4 嵌入式Linux调试器GDB的使用 1.5 make工程管理器 1.6 Eclipse集成开发环境 本章小结,www.embedu.org,1.1嵌入式Linux下C语言概述,1.1.1 C语言简史 1.1.2 C语言特点 1.1.3 嵌入式Linux C语言编程环境,www.embedu.org,1.1.1 C语言简史,C语言最初是美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出来的,此时的C语言只是为了描述和实现UNIX操作系统的一种工作语言。在一段时间里,C语言还只在贝尔实验室内部使用。 1975年,UNIX第6版公布后,C语言突出的优点引起人们的普遍注意。 1977年出现了可移植的C语言。 1978年UNIX第7版的C语言成为后来被广泛使用的C语言版本的基础,被称为标准C语言。 1983年,美国国家标准化协会(ANSI)根据C语言问世以来的各种版本,对C语言进行发展和扩充,并制定了新的标准,称为ANSI C。 1990年,国际标准化组织ISO制定了ISO C标准,目前流行的C语言编译系统都是以它为标准的。,www.embedu.org,1.1.2 C语言特点,C语言是结构化的语言 采用代码及数据分隔的方式,使程序的各部分独立 以函数的形式提供给用户,方便调用 C语言是模块化的语言 减少重复编程,减少劳动量,提高编程效率 程序可移植性好 不同机器上的编译程序大约有80%的代码是公共的 C语言运算符丰富、代码效率高 C语言共有34种运算符,使用各种运算符可以实现在其他高级语言中难以实现的运算。,www.embedu.org,1.1.3 嵌入式Linux C语言编程环境,编辑器 常用的编辑器有vi(vim)和Emacs 编译链接器 常用的编译器是GCC编译器 调试器 GDB 项目管理器 项目管理器make,www.embedu.org,1.2 嵌入式Linux编辑器vi的使用,1.2.1 vi的基本模式 1.2.2 vi的基本操作 1.2.3 vi的使用实例分析,www.embedu.org,1.2.1 vi的基本模式,命令行模式(Command Mode) 在该模式下用户可以输入命令来控制屏幕光标的移动,字符、单词或行的删除,移动复制某区段,也可以进入到底行模式或者插入模式下。 插入模式(Insert Mode) 用户只有在插入模式下才可以进行字符输入,用户按Esc键可回到命令行模式下。 底行模式(Last Line Mode) 在该模式下,用户可以将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、显示行号等。这一模式下的命令都是以“:”开始。,www.embedu.org,1.2.2 vi的基本操作,进入与离开 进入vi可以直接在系统提示符下键入vi 文档名称,vi可以自动载入所要编辑的文档或是创建一个新的文档。如在shell中键入vi hello.c(新建文档)即可进入vi画面. 进入vi后屏幕最左边会出现波浪符号,凡是有该符号就代表该行目前是空的。此时进入的是命令行模式。 要离开vi可以在底行模式下键入“:q”(不保存离开),“:wq”(保存离开)则是存档后再离开(注意冒号)。,www.embedu.org,11,1.2.2 vi的基本操作,在vi中打开/新建文档,在vi中退出文档,www.embedu.org,1.2.2 vi的基本操作,vi中3种模式的切换 (1)命令行模式、底行模式转为插入模式,www.embedu.org,1.2.2 vi的基本操作,vi中3种模式的切换 (续) (2)插入模式转为命令行模式、底行模式 从插入模式转为命令行模式、底行模式比较简单,只需使用Esc键即可。 (3)命令行模式与底行模式转换 命令行模式与底行模式间的转换不需要其他特别的命令,而只需要直接键入相应模式中的命令键即可。,www.embedu.org,1.2.2 vi的基本操作,vi的删除、修改与复制,www.embedu.org,1.2.2 vi的基本操作,vi的光标移动,www.embedu.org,1.2.2 vi的基本操作,vi的查找与替换,www.embedu.org,1.2.2 vi的基本操作,vi的文件操作指令,www.embedu.org,1.2.3 vi的使用实例分析,vi使用实例内容,(1)在/root目录下建一个名为vi的目录。 (2)进入vi目录。 (3)将文件/etc/inittab复制到当前目录下。 (4)使用vi编辑当前目录下的inittab。 (5)将光标移到该行。 (6)复制该行内容。 (7)将光标移到最后一行行首。 (8)粘贴复制行的内容。 (9)撤销第9步的动作。 (10)将光标移动到最后一行的行尾。,(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,不存盘。,www.embedu.org,1.2.3 vi的使用实例分析,vi使用实例解析,(1)mkdir /root/vi (2)cd /root/vi (3)cp /etc/inittab ./ (4)vi ./inittab (5)17(命令行模式) (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!(底行模式),www.embedu.org,1.3嵌入式Linux编译器GCC的使用,1.3.1 GCC概述 1.3.2 GCC编译流程分析 1.3.3 GCC警告提示 1.3.4 GCC使用库函数 1.3.5 GCC代码优化,www.embedu.org,1.3.1 GCC概述,GCC除了能支持C语言外,目前还支持Ada语言、C+语言、Java语言、Objective C语言、PASCAL语言、COBOL语言,以及支持函数式编程和逻辑编程的Mercury语言等 GCC的编译流程分为了4个步骤,分别为 预处理(Pre-Processing) 编译(Compiling) 汇编(Assembling) 链接(Linking),www.embedu.org,1.3.2 GCC编译流程分析,GCC使用的基本语法为: gcc option | filename 预处理阶段 gcc E o 目标文件 编译文件 选项“-E”可以使编译器在预处理结束时就停止编译 选项“-o”是指定GCC输出的结果。 编译阶段 gcc S o hello.s hello.i 选项“-S”能使编译器在进行完编译之后就停止,www.embedu.org,1.3.2 GCC编译流程分析,GCC使用的基本语法为: gcc option | filename 汇编阶段 gcc c hello.s o hello.o 选项“-c”把编译阶段生成的“.s”文件生成目标文件 “.o” 链接阶段 gcc hello.o o hello 可以生成可执行文件,www.embedu.org,1.3.3 GCC警告提示,Wall类警告提示,www.embedu.org,1.3.3 GCC警告提示,非Wall类警告提示 (1)“-ansi” 该选项强制GCC生成标准语法所要求的告警信息,尽管这还并不能保证所有没有警告的程序都是符合ANSI C标准的。 (2)“-pedantic” 该选项允许发出ANSI C标准所列的全部警告信息,同样也保证所有没有警告的程序都是符合ANSI C标准的。,www.embedu.org,1.3.4 GCC使用库函数,Linux函数库介绍 Linux中函数库包括两类:静态库和共享库。 静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库是在程序开始运行时被加载。 系统中可用的库都安装在/usr/lib和/lib目录下。库文件名由前缀lib和库名以及后缀组成。根据库的类型不同,后缀名也不一样。,www.embedu.org,1.3.4 GCC使用库函数,相关路径选项 (1)“-I ” GCC使用缺省的路径来搜索头文件,如果想要改变搜索路径,用户可以使用“-I”选项。“-I”选项可以在头文件的搜索路径列表中添加目录。这样,GCC就会到指定的目录去查找相应的头文件。 (2)“-L ” 选项“-L ”的功能与“-I ”类似,其区别就在于“-L”选项是用于指明库文件的路径。 gcc hello_sq.c L/root/workspace/gcc/lib lsunq o hello_sq,www.embedu.org,1.3.4 GCC使用库函数,使用不同类型链接库 使用不同类型的链接库的方法很相似,都是使用选项是“-l”(注意这里是小写的“L”)。该选项是用于指明具体使用的库文件。由于在Linux中函数库的命名规则都是以“lib”开头的,因此,这里的库文件只需填写lib之后的内容即可。 gcc -o dynamic -L /root/lq/testc/lib/dynamic.o -lmydynamic,www.embedu.org,1.3.5 GCC代码优化,GCC可以对代码进行优化,它通过编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。 虽然优化选项可以加快代码的运行速度,但对于调试而言将是一个很大的挑战。因为代码在经过优化之后,原先在源程序中声明和使用的变量很可能不再使用,控制流也可能会突然跳转到其他的地方,循环语句也有可能因为循环展开而变得到处都有,所有这些都将使调试工作异常艰难。,www.embedu.org,1.4 嵌入式Linux调试器GDB的使用,1.4.1 GDB使用实例 1.4.2设置/删除断点 1.4.3数据相关命令 1.4.4调试运行环境相关命令 1.4.5堆栈相关命令,www.embedu.org,1.4.1 GDB使用实例,进入GDB gdb test 查看文件l 设置断点 b 6 查看断点处情况 info b 运行代码 r 查看变量值 p n / p i 观察变量 watch n 单步运行 n 程序继续运行 c 退出GDB q,www.embedu.org,1.4.2设置/删除断点,www.embedu.org,1.4.3数据相关命令,www.embedu.org,1.4.4调试运行环境相关命令,www.embedu.org,1.4.5堆栈相关命令,www.embedu.org,1.5 make工程管理器,1.5.1 Makefile基本结构 1.5.2 Makefile变量 1.5.3 Makefile规则 1.5.4 make使用,www.embedu.org,1.5.1 Makefile基本结构,在一个Makefile中通常包含如下内容。 需要由make工具创建的目标体(target),目标体通常是目标文件、可执行文件
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号