- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 常用开发工具;6.1 概述;6.2 gcc编译系统;6.2.1 C语言编译过程 ;1.预处理阶段
预处理是常规编译之前预先进行的工作,故此得名。
负责读取C语言源文件,对其中以“#”开头的指令(伪指令)和特殊符号进行处理,如:;将“#include”所指出的文件替代该程序行,有两种格式:
#include 文件名
—预处理程序在/usr/include目录下找文件
#include “文件名”
—首先在当前工作目录中找,然后到标准目录/usr/include中找;
备注:
使用gcc命令时设置选项,指定查找头文件时要优先有哪些信誉好的足球投注网站的目录。
对C语言源程序中的宏名进行宏替换。
例:#define EOF -1
预处理程序将程序中有EOF的部分以-1取代。;宏定义:
1.可以在C程序中:#define name value:
如: #define stuname “Wang”
2.也可以在gcc命令的选项中设置宏定义;
如:gcc –D name=definition
第二种方式的优先级高于第一种方式,可以覆盖源文件中的定义。;gcc命令的使用;【例】gcc预处理选项;$ gcc –I /temp hello.c
;main()
{
printf(“display –D variable %s\n”, “test”);
printf(“display overwrite var1=%s\n ”, “call for help”);
printf(“hello, everyone!\n”);
};2.编译阶段
对预处理之后的输出文件进行词法分析、语法分析,试图找出所有不符合语法规则的部分。
并根据问题给出错误消息,终止编译,或给出警告。
当确定程序符合语法规则后,将其“翻译”为功能等价的中间代码,或汇编代码。
3.汇编过程
汇编程序(Assembler)把汇编代码翻译成目标机器代码;
包括代码段和数据段等部分,前者包括程序指令,后者存放各种全局或局部变量。
;2.gcc的编译程序选项
常用选项及其作用 ; $ cat m1.c
#includestdio.h
main()
{
int r;
printf(“enter an integer\n”);
scanf(“%d”,r);
square(r);
return 0;
};$ gcc –c m1.c
$ gcc –c m2.c
$ gcc m1.o m2.o –o m12
$ m12
enter an integer
6
square=36
;4.连接阶段
连接程序(Linker)要解决外部符号访问地址问题,即:
将一个文件中引用的符号(如:变量、函数调用),与该符号??另外一个文件中的定义连接起来,最终成为操作系统可以执行的可执行文件。;6.3 gdb程序调试工具;Linux系统中包含了调试程序gdb,
它是一个用来调试C和 C++ 程序的调试器;
gdb可以在程序运行时观察程序的内部结构和内存的使用情况;
gdb 所提供的一些功能如下所示:
运行程序,设置程序运行的参数和环境;
控制程序在指定的条件下停止运行;
当程序停止时,可以检查程序的状态;
动态监视程序中变量的值; ;6.3.1 启动gdb和查看内部命令;gdb程序调试的对象是可执行文件,而不是程序的源代码文件;
如果要让产生的可执行文件可以用来调试,需在执行gcc指令编译程序时,加上-g参数,指定程序在编译时包含调试信息;
(P181,表6.3);并等待用户输入相应的内部命令 ;6.3.2 应用示例;宏定义,变量BIGNUM值为1000;理论分析;ary数组
分配的
内存块;如何通过gdb调试工具验证上述错误?;初始化完成后,回到gdb提示符状态;(3)进入gdb环境后,用run命令运行该程序,系统给出错误提示 ;使用backtrace命令,显示函数调用的时,用户栈的情况。 ;用break命令设置断点,设置当执行到某一行时停止运行;
并且可以结合step命令,一行行跟踪程序执行过程;程序的第19行,且i=100时,程序停止运行;另外设置一个断点,当执行到第19行时,且i值等于99,停止运行;可见,数组的大小与循环体中变量i的变化范围有矛盾!1001000(BIGNUM的值)
fary数组的100号元素占用的内存地址,
与ar
您可能关注的文档
- 第2章_XML基础讲述.ppt
- 第九讲Service与BroadcastReceiver详解.ppt
- 第2章__进程讲述.ppt
- 第2章_FX系列可编程控制器讲述.ppt
- 第2章win7操作系统讲述.ppt
- 第2章PhotoshopCC快速掌握讲述.ppt
- 第2章_有哪些信誉好的足球投注网站引擎模式案例讲述.ppt
- 第2章_平均数、标准差和变异系数讲述.ppt
- 第2章Web程序开发环境讲述.ppt
- 第九章+系统安全-恶意代码详解.pptx
- 企业知识管理平台内容生态构建策略在高等教育领域的应用.docx
- 内河航运行业2025年节能减排技术应用研究.docx
- 脑机接口技术在2025年神经科学研究的伦理挑战与应对.docx
- 跨境电商2025年床上用品本土化营销模式下的客户关系管理研究.docx
- 宠物智能用品行业发展趋势及用户行为分析报告.docx
- 2025年人工智能在智能电网算法歧视风险控制报告.docx
- 文创盲盒销售渠道在社群经济中的应用研究.docx
- 2025密室逃脱主题馆主题游戏主题馆设计与用户满意度提升策略.docx
- 2025年智慧医院信息化建设现状、挑战与机遇研究报告.docx
- 盲盒文创市场跨界合作案例分析报告:2025年市场拓展.docx
文档评论(0)