Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写
更新时间:2024-05-27 11:47:01 阅读量: 综合文库 文档下载
实验二:gcc、gdb、Makefile的使用
? 实验目的:
(一)学会使用gcc编译器 (二)学会gdb调试器的使用 (三)学会编写Makefile
? 实验要求:
(一)编写一应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-O2等选项 (二)编写一应用程序,使用gdb调试,调试中使用到该小节所介绍的所有命令
(三)实现一应用程序,该程序有两个c文件构成,使用makefile来完成对该程序的编译
? 实验器材:
软件:安装了Linux的vmware虚拟机 硬件:PC机一台
? 实验步骤:
(一)gcc编译器
1、先用vi编辑hello.c文件,内容如下:
2、gcc指令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件]
例:使用gcc编译命令,编译hello.c生成可执行文件hello,并运行hello
上面的命令一步由.c文件生成了可执行文件,将gcc的四个编译流程:预处理、编译、汇编、连接一步完成,下面将介绍四个流程分别做了什么工作 3、-E选项的作用:只进行预处理,不做其他处理。
例:只对hello.c文件进行预处理,生成文件hello.i,并查看
通过查看可以看到头文件包含部分代码#include
-S选项的作用:只是编译不汇编,生成汇编代码
例:将hello.i文件只进行编译而不进行汇编,生成汇编代码hello.s
5、-c选项的使用
-c选项的作用:只是编译不连接,生成目标文件.o 例:将汇编代码hello.s只编译不链接成hello.o文件
6、将编译好的hello.o链接库,生成可执行文件hello
7、-static选项的使用
-static选项的作用:链接静态库
例:比较hello.c连接动态库生成的可执行文件hello和链接静态库生成的可执行文件hello1的大小
可以看到静态链接库的可执行文件hello1比动态链接库的可执行文件hello要大的多,他们的执行效果是一样的 8、-g选项的使用
-g选项的作用:在可执行程序中包含标准调试信息
例:将hello.c编译成包含标准调试信息的可执行文件hello2
带有标准调试信息的可执行文件可以使用gdb调试器进行调试,以便找出逻辑错误 9、-O2选项的使用
-O2选项的作用:完成程序的优化工作
例:将hello.c用O2优化选项编译成可执行文件hello3,和正常编译产生的可执行文件hello进行比较
(二)gdb调试器
1、先用vi编辑文件test.c用于gdb调试器调试,内容如下 #include
3、启动gdb进行调试
可以看到gdb启动界面中显示了gdb的版本、自由软件等信息,然后进入了有”gdb”开头的命令行界面 4、l(list)命令
l命令用于查看文件
可以看到每行代码面前都有对应的行号,这样方便我们设置断点。 5、b(breakpoint)命令
b用于设置断点,断点调试时调试程序的一个非常重要的手段,设置方法:在”b”命令之后加上对应的行号,如下图
在gdb中可以设置多个断点。代码运行时会到断点对应的行之前暂停,上图中,代码就会运行到第7行之前暂停(并没有运行第7行)。 6、info命令
info命令用于查看断点情况,设置好断点后可以用它来查看 7、r(run)命令
r命令用于运行代码,默认是从首行开始运行,也可以在r后面加上行号,从程序中指定行开始运行。
可以看到程序运行到断点处就停止了 8、p(print)命令
p命令用于查看变量的值,在调试的时候我们经常要查看某个变量当前的值与我们逻辑设定的值是否相同,输入p+变量名即可
可以看到result在第6行已被赋值为零,而i目前还没有被赋值所以是一个随机数,在主函数里看不到num的值,只有进入子函数才能看到 9、s(step)命令
正在阅读:
Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写05-27
抗菌药物临床应用指导原则试题01-18
金华经济开发区社会发展局多媒体、电脑、校园网络 - 图文06-17
工程量清单 - 图文03-08
(动脑筋题)小学一年级数学应用题10-20
人像修饰教程 - 图文03-14
政协党组向省委巡视组工作汇报06-06
SAP MM模块采购管理操作手册11-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 编写
- Makefile
- 以及
- 编程
- 实验
- 文件
- 使用
- 系统
- Linux
- gcc
- gdb
- 抗肿瘤药物药效学实验方法及指导原则
- 新版译林英语六年级(下册)知识点整理
- 农药
- 仪器分析实验指导书
- a概率论期末试卷集合()
- 浅谈建筑工程项目管理
- 高考英语二轮复习:阅读七选五提升练(一)
- 安岳县东方红小学大课间活动实施方案
- (完整版)外文文献翻译 - 格式-2011基于JBPM工作流课件录制系统
- 有机化学实验讲义
- 建筑工程测量竞赛试题(含答案)beh
- 浅谈新建培训学校之经营管理
- 伏立康唑注射液说明书
- 2019-2020学年九年级历史下册 第14课《冷战中的对峙》教案 新人
- 0Pcffse湖南农业大学宿舍(公寓)检查结果统计
- 老年公寓老人护理(收集整理)
- 企业行政管理人员绩效管理探讨
- 材料力学1 (答案)
- 论大型石油化工金属管道安装工程的全过程质量控制
- 圆角机柜市场前景预测及投资规划分析报告(目录)