版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 Linux 基础(2学时)实验一 LINUX编程环境实验目的 1. 熟悉Linux下C语言程序设计的基本步骤2. 掌握gcc编译器的各种参数的使用方法3. 掌握gcc编译器创建函数库的方法4. 掌握gdb调试程序的方法5. 掌握多文件编译中的makefile的用法实验内容1.编辑以下程序,按要求编译运行。#include <stdio.h>int main(void) double counter; double result; double temp; for (counter = 0; counter < 4000.0 * 4000.0 * 4000.0 / 20
2、.0 + 2030;counter += (5 - 3 +2 + 1 ) / 4) temp=counter/1239; result=counter; printf("运算结果是:%lfn", result); 实验步骤和要求:(1) 分别利用gcc的预处理,编译,汇编,链接命令生成example.i,example.s,example.o文件,分别用ls命令显示,要求有相应的命令和截图;(2)分别使用不同的优化选项O0O3,进行编译生成可执行程序m0m3,然后使用time命令统计程序的运行,如 time. /m0,比较运行时间。要求有运行截图和必要的分析。分析:首先我们
3、要知道-O0表示没有优化,-O1为缺省值,-O3优化级别最高,通过运行结果我们可以看出- O0相比其他能够提高可执行文件的执行效率,但是,编译、连接的速度就相应地要慢一些。 - O1 O3:比- O0 的优化级别更高,能更好的优化编译、连接。但整个编译、连接过程会更长。 2.编写如下程序hello.h,hello.c,main.c,将源程序hello.h: void hello(const char *name);hello.c #include<stdio.h> void hello(const char *name) printf(“hello %s”,name);
4、main.c #include“hello.h” int main() hello(“everyone”); return 0; 实验步骤和要求(要求每一步都要有运行截图):(1) 分别编辑以上三个源程序;(2) 利用gcc c命令将hello.c编译成.o文件,并用ls命令查看。(3) 利用以下命令,将.o文件创建静态库,并用ls查看。ar crv libmyhello.a hello.o注:静态库的命名规范是以lib为前缀,紧跟静态库名,扩展名为.a(4) 在程序中调用生成的静态库文件,运行程序查看输出结果。gcc -o hello main.c -L. lmyhello./hello(5
5、) 删除库文件libmyhello.a,再运行hello程序,测试hello程序是否链接了该库文件。删除库文件libmyhello.a后(6) 创建动态函数库,得到动态库文件libmyhello.so,并用ls命令查看。gcc -shared -fPIC -o libmyhello.so hello.o(7) 使用动态函数库,运行程序,观察运行结果。gcc -o hello main.c -L. -lmyhello 若出错,执行mv libmyhello.so /usr/lib思考:1.若同时生成同名的静态库和动态库文件,gcc命令会调用哪个库文件?当静态库和动态库同名时, gcc命令将优先调
6、用动态库。 2.总结如何创建函数库,静态库和动态库有何区别.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。3.设计一程序,要求计算输入的整数的平均值,将程序分成多个文件编译(main.c,average.c,average.h),并编写makefile文件;用make编译后改成返回最小值再编译,分析有多少文件不需重新编译。实验步骤和要求(要求每一步都要有运行截图):要求有源程序和make文件以及运行的截图/main.c#include "average.h&
7、quot;main() float a,b,ave; float average(float a,float b); ave=average(a,b); /average.c#include<stdio.h>float average(float a,float b) float ave; scanf("%f,%f",&a,&b); ave=(a+b)/2; printf("average is %fn",ave); return(ave);/average.hfloat average(float a,float b);Makefile#It is an example for describing makefileedit:main.o average.o gcc -o edit main.o average.omain.o: main.c average.hgcc -c main.caverage.o:average.c average.hgcc -c average.c修改average.c#include<stdio.h>float average(float a,float b) float
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夸克护理课件:护理伦理决策模型
- 护理质量与安全管理习题
- 骨肉瘤整合诊治指南2026
- 2026年国家宪法日广场宣传活动题库
- 疫苗冷链物流温控技术升级可行性研究报告
- 2026年公共机构节能条例知识测试试题
- 2026年机关干部经验材料写作竞赛卷
- 2026年卫健委卫生技术评估岗面试新技术准入
- 夏季防暑员工培训
- 2026年世界环境日主题知识竞赛试题
- 2026年重庆八中中考语文模拟试卷(3月份)
- 保安公司班长工作制度
- 2026年安全一般工贸企业安全管理人员综合提升试卷完美版附答案详解
- 2026河南黄金叶投资管理有限公司所属企业大学生招聘18人备考题库及答案详解(网校专用)
- 乌拉地尔治疗及护理
- 2026年宣城广德市国信工程造价咨询有限公司社会公开招聘3名考试参考试题及答案解析
- 2026年山东济南历下区九年级中考语文一模考试试题(含解析)
- 2026年高中面试创新能力面试题库
- 2026北京市皇城粮油有限责任公司昌平区国资委系统内招聘6人笔试参考题库及答案解析
- 2022年03月广东深圳市宝安区松岗人民医院公开招聘专业技术人员笔试参考题库含答案解析
- GB/T 27664.1-2011无损检测超声检测设备的性能与检验第1部分:仪器
评论
0/150
提交评论