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

上传人:b****6 文档编号:13118863 上传时间:2023-06-11 格式:DOCX 页数:13 大小:543.36KB
下载 相关 举报
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第1页
第1页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第2页
第2页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第3页
第3页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第4页
第4页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第5页
第5页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第6页
第6页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第7页
第7页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第8页
第8页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第9页
第9页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第10页
第10页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第11页
第11页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第12页
第12页 / 共13页
linux实验报告3 Linux上C程序编译调试和工程文件管理.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《linux实验报告3 Linux上C程序编译调试和工程文件管理.docx》由会员分享,可在线阅读,更多相关《linux实验报告3 Linux上C程序编译调试和工程文件管理.docx(13页珍藏版)》请在冰点文库上搜索。

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

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

深圳大学实验报告

 

课程名称:

Linux操作系统

实验项目名称:

Linux上C程序编译,调试和工程文件管理

学院:

计算机与软件学院

专业:

软件工程

指导教师:

冯禹洪

报告人:

文成学号:

2011150259班级:

02

实验时间:

2013/12/31

实验报告提交时间:

2013/12/31

教务处制

一、实验目标:

熟悉Linux上C程序设计环境,包括以下内容:

1.联机帮助man命令

2.编译工具gcc的使用

3.熟悉使用gdb来调试程序

4.熟悉C工程文件的管理工具makefile

二、实验环境与工件

湖边Linux实验室

Fedora13

三、实验内容与步骤

1.动态库函数可以在多个应用程序之间共享,可以减少应用程序文件的容量和应用程序的装载时间。

因此,熟悉构建动态库可以提高软件的编写质量。

请跟随以下步骤构建动态库message,并用其编写程序、编译和运行。

(40分)

1.1编写源程序message.c(见图1)和main.c(见图2)

图1.message.c源程序

图2.main.c源程序

1.2用以下命令对message.c进行编译,其中,“-fPIC”选项是告诉gcc产生的代码不要包含对函数和变量具体内存位置的引用。

1.3以上命令将获得目标文件message.o,使用以下命令建立共享函数库message:

1.4使用1.3获得的共享函数库来编译main.c文件

1.5设置共享函数库搜索路径

1.6运行程序并附上结果

1.7构建静态可执行程序

1.7.1$gcc–cmessage.c

1.7.2$ar–crvlibmsg.amessage.o

1.7.3$gcc–omainmain.c–L./-lmsg

1.7.4$./main

1.8运行以下两个命令并截图说明结果:

$lddgoodbye

$lddmain

$ls–lgoodbyemain

/*附加题:

经观察,如果用ubuntu,main和googbye的大小在一些发行版本下没有区别,如果实验如此,请尝试解释这一现象。

附加题目,平时成绩+5分,超过40分不算。

*/

2.图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运行$lddgoodbye

$lddmain的结果如下

执行$ls–lgoodbyemain

静态可执行程序和动态可执行程序的比较如下:

静态库:

当应用程序和静态库一起编译时,引用的库函数中的代码会被直接包含进二进制程序

静态可执行程序(完整的、独立运行)

共享函数库:

每个库函数在所有应用程序之间共享-全局函数

减少文件的容量

减少大型Linux应用程序的装载时间

提高系统的安全性

动态可执行程序(不完整、依靠外部共享库以运行

2.

编写程序:

首先使用如下命令编译

使用gdb去观察程序的行为,输入命令gdbreserve

输入list1和l查看代码

输入run运行程序。

运行有错误

用breakmian可以设断点

Infobreak可以显示断点

修改代码:

在gdb下键入run

Ok

3.

写好源程序

先使用gcc-c命令

编写相应的makefile

用make编译然后运行

 

五、实验总结与体会

这次实验是照着ppt做的,ppt写的比较详细,懂得了如何在linux下运行C程序。

以及动态函数库和静态函数库的区别和gdb的使用。

Gdb不是很会用,不太习惯,第二题的找bug找了很久,不知道怎么找。

指导教师批阅意见:

成绩评定:

指导教师签字:

年月日

备注:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2