- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深 圳 大 学 实 验 报 告
课程名称: 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可
您可能关注的文档
最近下载
- 四川大学数据库系统原理期末考试试题.pdf VIP
- 生猪代养承包协议:2024年新型合作模式版B版.docx VIP
- 2025年西藏自治区社区工作者招聘考试(公共基础知识)历年参考题库含答案详解(5套).docx VIP
- 工商管理本科46-14159商业伦理与企业社会责任模拟题(二).docx VIP
- 工商管理本科46-14159商业伦理与企业社会责任模拟题(一).docx VIP
- 2024宁夏理工学院教师招聘考试真题及答案.docx
- 2024-2025学年广东省广州市越秀区数学六年级第一学期期末达标检测试题含解析.doc VIP
- 52 非线性泛函分析 [郭大钧 编著] 2015年版.pdf VIP
- 01kdv8000a一代软硬件介绍及配置.pdf VIP
- 《农业企业经营与管理》课件——项目四 农业企业的经营.pptx VIP
原创力文档


文档评论(0)