实验一 LINUX编程环境.doc

实验一 LINUX编程环境.doc

ID:50802072

大小:739.00 KB

页数:7页

时间:2020-03-14

实验一 LINUX编程环境.doc_第1页
实验一 LINUX编程环境.doc_第2页
实验一 LINUX编程环境.doc_第3页
实验一 LINUX编程环境.doc_第4页
实验一 LINUX编程环境.doc_第5页
资源描述:

《实验一 LINUX编程环境.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第一章Linux基础(2学时)实验一LINUX编程环境实验目的1.熟悉Linux下C语言程序设计的基本步骤2.掌握gcc编译器的各种参数的使用方法3.掌握gcc编译器创建函数库的方法4.掌握gdb调试程序的方法5.掌握多文件编译中的makefile的用法实验内容1.编辑以下程序,按要求编译运行。#includeintmain(void){doublecounter;doubleresult;doubletemp;for(counter=0;counter<4000.0*4000.0*400

2、0.0/20.0+2030;counter+=(5-3+2+1)/4){temp=counter/1239;result=counter;}printf("运算结果是:%lf",result);}实验步骤和要求:(1)分别利用gcc的预处理,编译,汇编,链接命令生成example.i,example.s,example.o文件,分别用ls命令显示,要求有相应的命令和截图;(2)分别使用不同的优化选项O0~O3,进行编译生成可执行程序m0~m3,然后使用time命令统计程序的运行,如time./m0,比较

3、运行时间。要求有运行截图和必要的分析。分析:首先我们要知道-O0表示没有优化,-O1为缺省值,-O3优化级别最高,通过运行结果我们可以看出-O0相比其他能够提高可执行文件的执行效率,但是,编译、连接的速度就相应地要慢一些。-O1~O3:比-O0的优化级别更高,能更好的优化编译、连接。但整个编译、连接过程会更长。    2.编写如下程序hello.h,hello.c,main.c,将源程序hello.h:voidhello(constchar*name);hello.c#includevoi

4、dhello(constchar*name){printf(“hello%s”,name);}main.c#include“hello.h”intmain(){hello(“everyone”);return0;}实验步骤和要求(要求每一步都要有运行截图):(1)分别编辑以上三个源程序;(1)利用gcc–c命令将hello.c编译成.o文件,并用ls命令查看。(2)利用以下命令,将.o文件创建静态库,并用ls查看。arcrvlibmyhello.ahello.o注:静态库的命名规范是以lib为前缀,紧跟静态

5、库名,扩展名为.a(1)在程序中调用生成的静态库文件,运行程序查看输出结果。gcc-ohellomain.c-L.–lmyhello./hello(2)删除库文件libmyhello.a,再运行hello程序,测试hello程序是否链接了该库文件。删除库文件libmyhello.a后(3)创建动态函数库,得到动态库文件libmyhello.so,并用ls命令查看。gcc-shared-fPIC-olibmyhello.sohello.o(1)使用动态函数库,运行程序,观察运行结果。gcc-ohellomai

6、n.c-L.-lmyhello若出错,执行mvlibmyhello.so/usr/lib思考:1.若同时生成同名的静态库和动态库文件,gcc命令会调用哪个库文件?当静态库和动态库同名时,gcc命令将优先调用动态库。2.总结如何创建函数库,静态库和动态库有何区别.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。3.设计一程序,要求计算输入的整数的平均值,将程序分成多个文件编译(main

7、.c,average.c,average.h),并编写makefile文件;用make编译后改成返回最小值再编译,分析有多少文件不需重新编译。实验步骤和要求(要求每一步都要有运行截图):要求有源程序和make文件以及运行的截图//main.c#include"average.h"main(){floata,b,ave;floataverage(floata,floatb);ave=average(a,b);}//average.c#includefloataverage(floata,fl

8、oatb){floatave;scanf("%f,%f",&a,&b);ave=(a+b)/2;printf("averageis%f",ave);return(ave);}//average.hfloataverage(floata,floatb);Makefile#Itisanexamplefordescribingmakefileedit:main.oaverage.ogcc-oeditmain.oav

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。