浙江大学城市学院实验报告
课程名称 计算机系统原理实验linux下gcc编译的四个步骤
实验项目名称 实验二 hello可执行程序的生成以及GCC和GDB使用
学生姓名 专业班级 学号
实验成绩 指导老师(签名 ) 日期
注意:
● 务请保存好各自的源代码,已备后用。
● 请把作业同时上传到BB平台和FTP。
● 文件名为:学号_姓名_日期_实验几,如30801001_姓名_20100305_实验01
● ftp://10.66.28.222:2007
一、实验目的:
1. 熟悉Linux操作系统环境;
2. 通过了解高级语言源程序和目标机器代码的不同表示及其相互转换,深刻理解高级语言和机器语言之间的关系,以及机器语言和不同体系结构之间的关系。
3 掌握GCC在Linux环境下编写C语言程序命令和步骤;
4. 掌握GDB调试C语言程序命令和步骤。
二、实验内容:
1、使用文本编辑器编写hello源代码;
2、使用GCC编译器,逐步编译hello程序,观察中间文件。
3、使用文本编辑器编写tst.c源程序;
4、使用GDB调试tst程序,掌握常用调试命令。
三、实验步骤:
1、 使用文本编辑器编写hello程序源码,截图展示。
2、 根据实验讲义,使用不同的命令选项,输出hello编译过程中间文件,截图展示。
3、 使用Editplus或者其他合适的软件,查看hello.i,hello.s,hello.o hello文件内容,截图展示。
4、 使用文本编辑器编写实验讲义中给出的tst.c源码,截图展示。
5、 根据实验讲义步骤,学习逐步调试tst程序,掌握GDB常用命令,截图展示。
6、 结合实验操作以及GDB的help,了解以下命令的作用。
gdb | 启动gdb |
list | 列出函数 |
run | 运行程序 |
break | 设置断点 |
print | 强制调用函数 |
continue | 继续运行程序直到下一个断点 |
next | 执行下一步 |
step | 单步进入 |
info | 查看程序信息 |
finish | 退出当前函数 |
quit | 退出gdb |
help | 帮助指令 |
四、思考题(请根据自己的理解,能回答多少就答多少)
(1)分析同一个源程序在不同机器上生成的可执行目标代码是否相同。
提示:从多个方面(如ISA、OS和编译器)来分析。
不相同。因为对于不同的机器其硬件组成不同,例如:CPU。所以同一个源程在不同机器上生成的可执行目标代码是不同的。
(2)你能在可执行目标文件中出函数printf ()对应的机器代码段吗?能的话,请标示出来。
不能。因为源程序中的printf函数在可执行文件中已转换为机器语言。被翻译的机器语言中有printf函数,但是不知道是从哪一段开始翻译的。
(3)为什么源程序文件的内容和可执行目标文件的内容完全不同?
因为源程序文件时可以直接编写的。而可执行文件是被机器语言翻译过后的执行内容。所以内容不同。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论