欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    linux下的c编程.ppt

    • 资源ID:2673643       资源大小:460KB        全文页数:29页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    linux下的c编程.ppt

    1,Linux下的C程序编程,2,主要内容,GCC编译器,GDB调试器,3,一、GCC编译器 1、GCC是什么,GCC(GNU C Complier)是符合ANSI C标准的多平台编译器。GCC通过后缀来区别输入文件的类型,集成C、C+、JAVA等多种语言编译器。cC语言源代码文件。h程序所包含的头文件。o编译后的目标文件。i 已经预处理过的C源代码文件。s汇编语言源代码文件。S经过预编译的汇编语言源代码文件。C、cpp、.cc或.cxx C+源代码文件。ii己经预处理过的C+源代码文件。a由目标文件构成的档案库文件。,通过文件后缀来判断文件类型,通过权限来判断文件是否可以运行,4,2、GCC工作流程,5,起步演示helloworldhello.c#include int main(void)printf(“hello world!n”);return 0;编译运行这段程序:gcc hello.c o hello./hello输出:hello world!,6,3、基本使用,基本用法:gcc options filenames options:编译器所需要的编译选项 filename:要编译的文件名 GCC有超过100个的编译选项。选项的合理使用对编译调试程序有很大作用。只介绍其中最基本、最常用的参数-o output_filename:确定可执行文件的名称为output_filename.如果不给出这个选项,gcc就给出预设的可执行文件a.out,7,-c 进行预处理、编译,产生目标代码,不连接成为可执行文件。编译器只是由输入的.c等源代码文件生成.o为后缀的的文件(一般应用程序开发用不到,内核开发中可以用到),-g 产生符号调试工具(GNU的GDB)所必要的符号信息,要想对源代码进行调试,必须加入这个选项。,-O 告诉gcc进行基本优化,整个源代码会在编译、连接过程中进行优化处理-O2 产生尽可能小、快的代码,比-O跟好的优化编译、连接,8,#include int main(void)double counter;double result;double temp;for(counter=0;counter2000.0*2000.0*2000.0/20.0+2020;counter+=(5-1)/4)temp=counter/1979;result=counter;printf(“result is%lfn”,result);return 0;,9,gcc optimize.c o optimizetime./optimizegcc O optimize.c o optimize time./optimize 对比两次执行的输出结果不难看出,程序的性能的确的到了很大幅度的改善,10,-w 关闭所有警告,建议不要使用此项-Wall 允许发出gcc能提供的所有有用的警告,也可以用-W(warning)来标记指定的警告,11,12,多个文件的编译,vi main.c#include void chessboard();void stair();main()chessboard();stair();,vi chessboard.c#include void chessboard()int i,j;for(i=0;i8;i+)for(j=0;j8;j+)if(i+j)%2=0)printf(%c%c,0 xa1,0 xf6);else printf();printf(n);printf(n);,vi stair.c#include void stair()int i,j;for(i=1;i11;i+)for(j=1;j=i;j+)printf(%c%c,0 xa1,0 xf6);printf(n);printf(n);,gcc main.c chessboard.c stair.c o prngrap,13,常见错误,语法错误:错误信息:文件source.c中第 n 行有语法错误(syntex error)。头文件错误错误信息:找不到头文件head.h(can not find include file head.h)。函数库错误错误信息:链接程序找不到所需的函数库。如:ld:-lm:No such file or directory,14,二、GDB调试器,1、GDB介绍GDB调试器主要用于调试可执行文件,这个文件必须提供调试版本,包含调试信息。所以,编译程序时一定用调试选项使生成的可执行文件内包含调试信息,常用-g。调试信息包含程序里每个变量的类型和在可执行文件里的地址映射及行号。主要功能:监视程序中变量的值设置断点逐行执行代码,15,起步调试test.c,void main()int i;long result=0;for(i=1;i=100;i+)result+=i;printf(result=%dn,result);,16,GDB快速进阶1、编译生成可执行文件 gcc g test.c o test2、启动GDB gdb test3、在main函数处设置断点 break main4、运行 run5、单步运行 next6、继续运行 continue,17,2、启动GDB 1)gdb 调试程序名 举例:gdb helloworld 2)gdb file 调试程序名,18,3、GDB基本命令,list(l)查看程序break(b)函数名 在函数入口处设置断点break(b)行号 在指定行添加断点break(b)文件名:行号 在制定文件名的制定行添加断点,19,20,2、使用举例:调试一个计算150和1100累加值的程序。,21,#include int sum(int n);main()int i,result=0;for(i=1;i=50;i+)result+=i;printf(result1-50=%dn,result);printf(result1-100=%dn,sum(100);int sum(int n)int i,sum;for(i=1;i=n;i+)sum+=i;return sum;,22,编译:gcc tst.c o tst运行:./tstgcc编译时无报错,表明编译通过。但运行tst时,第一行结果result1-50=1275是正确的,第二行结果result1-100=14160814与预想不符,23,(3)调试输入命令:gcc-g tst.c-o tst启动调试:gdb tst在gdb下进行调试过程用到许多基本gdb命令,一般都只写首字母即可。键入“l”(list)查看gdb载入文件tstsm的源代码。按回车则重复上一次操作。,24,在第18行设置断点,键入”info b”查看设置断点的情况;输入命令“d 断点号”删除(delete)断点,GDB中键入“r”(run),程序从首行运行到断点前一句,在断点处暂停。,25,在GDB中键入“p(print)变量名”命令查看断点处的相关变量值,在gdb中输入命令“n”(next),采用单步运行方式继续往下执行程序,在gdb中输入命令“c”(continue)把剩余还未执行的程序执行完键入“q”(quit),退出GDB调试,返回终端的系统提示符。,本例子错误在sum函数中未对sum变量初始化。,26,关于watch 变量注意,watch设置的观察点当值有改变时才会有输出。有时对断点的变量设置了观察点,但是c(continue),n(ext)使用的不适当会看不到变量值的变化效果。某个求字符串反序的程序中的一段代码for(i=0;isize;i+)str2size-i=str1i;(a)str2size+1=0;(b)gdb调试时,在a处设置断点,run后停在a处,设置对变量的观察点watch str2size-i。然后按n一步步执行,看不到值的变化,按c才能看到效果。,27,4、GDB的help命令,直接输入help,可查看到GDB命令种类查看某个类中的各种命令。如上步中列出的种类data查看某个命令,(gdb)helpList of classes of commands:aliases-Aliases of other commandsbreakpoints-Making program stop at certain pointsdata-Examining datafiles-Specifying and examining filesinternals-Maintenance commandsType help followed by a class name for a list of commands in that class.Type help followed by command name for full documentation.Command name abbreViations are allowed if unambiguous.,(gdb)help dataExamining data.List of commands:call-Call a function in the programdelete display-Cancel some expressions to be displayed when program stopsdelete mem-Delete memory regiondisable display-Disable some expressions to be displayed when program stopsType help followed by command name for full documentation.Command name abbreViations are allowed if unambiguous.,查找call命令:help call。(gdb)help callCall a function in the program.The argument is the function name and arguments,in the notation of thecurrent working language.The result is printed and saved in the valuehistory,if it is not void.,28,实验几个简单C程序。课本及实验教材中陆续会出现各种C程序。均可作实验。出现的函数很多是各种功能的linux系统调用,注意多积累对系统调用的认识。,29,想实现某个功能,却不知道用哪个函数?查手册Linux函数库参考手册(适合不知道什么功能该用什么函数,以及函数的具体使用)man(适合知道函数名后查具体使用)积累多读、多做vi中在函数名处按shift+k可看到函数说明信息,

    注意事项

    本文(linux下的c编程.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开