第三章Linux下C编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章Linux下C编程

第三章 Linux下的C编程基础;本章目标:;Linux下C语言编程概述;C语言的特点: ;char *f() { char a[5]; char b[5]; a[0]=a; a[1]=b; a[2]=c; a[3]=d; a[4]=e; strcpy(b,a); return b; } 请问:一:该函数中用a作为一个字符串是否存在问题? ????? 二、该函数返回的b是否可用,为什么? ;x value is 0xAddress is 0x12ff7c ;x value is 0x123456 xAddress is 0x12ff7c xsize is 4;Linux下C语言编程环境概述;源代码*.C;编译过程非常复杂,包括词义、语法和语义的分析,中间代码的生成和优化,符号表的管理和出错处理等。 在Linux中最常用的编译器是Gcc编译器。 arm-none-linux-gnueabi-gcc arm-2007q3-51-arm-none-linux-gnueabi- i686.tar.bz 命令: tar xvjf arm-2007q3-51-arm-none-linux-gnueabi- i686.tar.bz -C /usr/local/arm ;(3)调试器 调试器不是代码执行必备工具,而是专门为程序员方便调试程序而用的。在编程过程中,往往调试所消耗的时间远远大于编写代码的时间。 Gdb是绝大多数Linux开发人员所使用的调试器。 (4)项目管理器 Linux中的项目管理器“make”有些类似于Windows中Visual C++里的“工程”,它是一种控制编译或者重复编译软件的工具。;Vi编辑器;Vi有3种模式,分别为命令行模式、插入模式及底行模式。 (1)命令行模式 用户在用Vi编辑文件时,最初进入的为一般模式。在该模式中可以通过上下移动光标进行“删除字符”或“整行删除”等操作。 (2)插入模式 只有在该模式下,用户才能进行文字编辑输入,用户可按Esc键回到命令行模式。;Vi的模式;Vi的基本流程;(1)命令行模式的常见功能键。;(2)插入模式的功能键只有一个,即Esc退出到命令行模式。;(3)底行模式的功能键。;Emacs;Emacs的基本操作;进入Emacs后,即可进行文件编辑。 Emacs光标移动功能键; Emacs剪切和粘贴 ;Emacs复制文本;Emacs查找文本;Emacs保存文档;Emacs退出文档;Emacs中的模式;Gcc编译器;gcc的使用;Gcc所支持后缀名解释;Gcc编译流程;例如对于hello.c源代码如下: #includestdio.h int main() { printf(“hello!This is our embedded world!\n”); return 0; };(1)预处理阶段 Gcc指令的一般格式: Gcc[选项]要编译的文件[选项][目标文件] [root@localhost Gcc]#Gcc –E hello.c –o hello.i “-o”指目标文件 “.i”文件为已经过预处理的C原始程序 “-E”只进行预编译,不做其它处理 这一步编译器将stdio.h编译进来。;Gcc编译流程;Gcc编译流程;Gcc编译流程;后缀名;Gcc的告警和出错选项;Gdb调试器;当程序停止时,可以检查程序的状态; 修改程序的错误,并重新运行程序; 动态监视程序中变量的值; 可以单步执行代码,观察程序的运行状态。 ;gdb程序调试的对象是可执行文件,而不是程序的源代码文件。然而,并不是所有的可执行文件都可以用gdb调试。如果要让产生的可执行文件可以用来调试,需在执行gcc指令编译程序时,加上-g参数,指定程序在编译时包含调试信息。调试信息包含程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb 利用这些信息使源代码和机器码相关联。 ;gdb基本命令 还可以用下面的方式来运行gdb: gdb filename 其中,filename是要调试的可执行文件。用这种方式运行gdb可以直接指定想要调试的程序。这和启动gdb后执行file filename命令效果完全一样。也可以用gdb去检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。 gdb支持很多的命令且能实现不同的功能。这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令, 下面列出了在使用gdb 调试时会用到的一些命令。;1)file命令:装入想要调试的可执行文件。 2)cd命令:改变工作目录。 3)pwd命令:返回当前工作日录。 4)run命令:执行当前被调试的程序。

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档