linux实验报告3 Linux上C程序编译,调试和工程文件管理.docVIP

  • 20
  • 0
  • 约2.48千字
  • 约 13页
  • 2016-08-21 发布于湖北
  • 举报

linux实验报告3 Linux上C程序编译,调试和工程文件管理.doc

linux实验报告3 Linux上C程序编译,调试和工程文件管理

深 圳 大 学 实 验 报 告 课程名称: Linux操作系统 实验项目名称: Linux上C程序编译,调试和工程文件管理 学院: 计算机与软件学院 专业: 软件工程 指导教师: 冯禹洪 报告人: 文成 学号: 2011150259 班级: 02 实验时间: 2013/12/31 实验报告提交时间: 2013/12/31 教务处制 一、 实验目标: 熟悉Linux上C程序设计环境,包括以下内容: 1. 联机帮助man命令 2. 编译工具gcc的使用 3. 熟悉使用gdb来调试程序 4. 熟悉C工程文件的管理工具makefile 二、实验环境与工件 湖边Linux实验室”选项是告诉gcc产生的代码不要包含对函数和变量具体内存位置的引用。 以上命令将获得目标文件message.o,使用以下命令建立共享函数库message: 使用1.3获得的共享函数库来编译main.c文件 设置共享函数库搜索路径 运行程序并附上结果 构建静态可执行程序 $gcc –c message.c $ar –crv libmsg.a message.o $gcc –o main main.c –L./ -lmsg $./main 运行以下两个命令并截图说明结果: $ldd goodbye $ldd main $ls –l goodbye main /*附加题:经观察,如果用ubuntu, main 和googbye的大小在一些发行版本下没有区别, 如果实验如此,请尝试解释这一现象。附加题目,平时成绩+5分,超过40分不算。*/ 图3-4中的reverse程序是有bug的,请使用gdb去观察程序的行为,对关键行为截图说明,定位错误(截图说明)并修正程序bug。附上修正的程序及其运行结果。(40分) 图3. reverse.h头文件 图4. reverse1.c源程序 3.假设project有5个文件:main.c(图5), mytool1.h(图6), mytool1.c(图7), mytool2.c, mytool2.h,其中,mytool1.c应该包含mytool1.h,mytool2.c应包含mytool2.h,生成的二进制文件为main。相应的依赖关系见图10。请编写相应的makefile并用make编译然后运行,步骤如下: 3.1. $make 3.2. $./main 要求:附上相应的makefile源代码及编译和运行结果。(20分) 图5. main.c源程序 图6. mytool1.h源程序 图7. mytool1.c源程序 图8. mytool2.h源程序 图9. mytool2.c源程序 图10.各源程序之间的依赖关系 四、实验结果 1. 1.1编写源程序message.c 编写源程序main.c 1.2对message.c进行编译 获得目标文件message.o 1.3建立共享函数库message: 1.4使用1.3获得的共享函数库来编译main.c文件 得到 1.5设置共享函数库搜索路径 1.6运行程序并附上结果 1.7构建静态可执行程序 1.8运行$ldd goodbye $ldd main的结果如下 执行$ls –l goodbye main 静态可执行程序和动态可执行程序的比较如下: 静态库: 当应用程序和静态库一起编译时,引用的库函数中的代码会被直接包含进二进制程序 静态可执行程序(完整的、独立运行) 共享函数库: 每个库函数在所有应用程序之间共享-全局函数 减少文件的容量 减少大型Linux应用程序的装载时间 提高系统的安全性 动态可执行程序(不完整、依靠外部共享库以运行 2. 编写程序: 首先使用如下命令编译 使用gdb去观察程序的行为,输入命令gdb reserve 输入list1和l查看代码 输入run运行程序。 运行有错误 用break mian可

文档评论(0)

1亿VIP精品文档

相关文档