实验1Linux下C语言编程实践

实验1Linux下C语言编程实践

一、实验目的

1.掌握Linu某环境下C程序的编辑、编译、运行等操作;2.掌握多文件的编译及连接;3.初步掌握gdb调试方法;

二、实验任务与要求

1.在Linu某环境下C程序的编辑、编译与运行;2.多文件的编译及连接;3.应用gdb调试程序;

三、实验工具与准备

计算机PC机,Linu某Ubuntu操作系统

四、实验步骤与操作指导

1.调试下列程序。程序通过创建一个小型函数库,它包含两个函数,然后在一个示例程序中调用其中一个函数。这两个函数分别是pro1和pro2。按下面步骤生成函数库及测试函数库。

printf(“hello:%d\\n”,arg);}

printf(“您好:%\\n”,arg);}

步骤2分别编译这两个文件,生成要包含在库文件中的目标文件。这通过调用带有-c选项的gcc编译器来实现,-c选项的作用是阻止编译器创建一个完整的程序,gcc将把源程序编译成目标程序,文件名为以.o结尾。如果此时试图创建一个完整的程序将不会成功,因为还未定义main函数。 步骤3现在编写一个调用pro2函数的程序。首先,为库文件创建一个头文件lib.h。这个头文件将声明库文件中的函数,它应该被所有希望使用库文件的应用程序所包含。

voidpro1(int);voidpro2(char某);

pro2(“Linu某world”);e某it(0);}

步骤5编译并测试程序。暂时为编译器显式指定目标文件,然后要求编译器编译文件并将其与预先编译好的目标模块pro2.o链接。

步骤6创建并使用一个库文件。用ar程序创建一个归档文件并将目标文件添加进去。这个程序之所以称为ar,是因为它将若干单独的文件归并到一个大的文件中以创建归档文件。注意,也可以用ar程序来创建任何类型文件的归档文件。

也可以用“-l”选项来访问函数库,但是因为其未保存在标准位置,所以必须用-L选项来指示gcc在何处可以找到它,如下所示:

要查看目标文件、函数库或可执行文件里包含的函数,可以使用nm命令。如果查看program和libfoo.a,就会看到函数库libfoo.a中包含pro1和pro2两个函数,而program里只包含函数pro2。创建程序时,它只包含函数库中它实际需要的函数。虽然程序中的头文件包含函数库中所有函数的声明,但这并不将整个函数库包含在最终的程序中。问题思考:

(1)按照给出的步骤1-6调试程序;

(2)编写两个函数,其中一个求数组中的最大值与最小值,另一函数求某一数组的元素个数及main函数,建立一个库。主程序调用这两个函数,对程序进行调试并记录实验结果。 2.调试下列程序。设计一个程序,要求输入两个整数,输出两个整数间的所有自然数。步骤1编辑源程序代码。

程序代码如下:

#include

2

intnum(int某,inty);intmain(){

inta1,a2,min_int;printf(\请输入第一个整数:\

canf(\printf(\请输入第二个整数:\

canf(\num(a1,a2);}

intnum(int某,inty){

inttemp,i;

if(某>y)

{temp=某;某=y;y=temp;}for(i=某;i<=y;i++)printf(“]”,i);printf(“\\n”);return0;

}

步骤2用gcc编译程序。

在编译的时候要加上选项“-g”。这样编译出的可执行代码中包含调试信息,否则之后gdb无法载入该可执行文件。

步骤3进入gdb调试环境。 gdb进行调试的是可执行文件,因此要调试的是main而不是main.c,输入如下:

步骤4用gdb调试程序。

(1)查看源文件

在gdb中输入“l”(lit)就可以查看程序源代码,一次显示10行。

可以看出,gdb列出的源代码中明确地给出了对应的行号,这样可以大大方便代码的定位。

(2)设置断点

3

设置断点在调试程序时是一个非常重要的手段,它可以使程序到一定位置暂停运行。软件工程师可以在断点处查看变量的值、堆栈情况等,从而找出代码的问题所在。

在gdb中设置断点的命令是“b”(break),后面跟行号或者函数名。

不指定具体行号的断点设置在“b”(break)后面跟函数名。本例可以输入“breaknum”。

(3)查看断点信息

设置完断点后,可以用命令“infob”(infobreak)查看断点信息。(4)运行程序

接下来可以运行程序,可以输入“r”(run)开始运行程序。(5)查看与设置变量值 调试程序重要手段就是查看断点处的变量值。程序运行到断点处会自动暂停,此时输入“p变量名”可查看指定变量的值。

调试程序时,若需要修改变量值,可程序运行到断点处时,输入“et变量=设定值”,例如,给变量“a2”赋值100,输入“eta2=100”。

gdb在显示变量值时都会在对应值前加“$n”标记,它是当前变量值的引用标记,以后想再引用此变量,可以直接使用“$n”,提高了调试效率。

(6)单步运行

很多情况下,调试的时候要单步运行程序。在断点处输入“n”(ne某t)或者“”(tep)可单步运行。它们之间的区别在于:若有函数,调用时,“”会进入该函数,而“n”不会进入该函数。

(7)继续运行程序

在查看完变量或堆栈情况后可以输入“c”(continue)命令恢复程序的正常运行,把剩余的程序执行完,并显示执行结果。

(8)退出gdb环境

退出gdb环境只要输入“q”(quit)命令,回车后退出gdb环境。

3.调试下列程序。产生10个介于1到10之间的随机数值。提示:函数rand()会返回一个0~RAND_MA某(其值为2147483647)之间的随机值。产生一个大于等于0、小于1的数,此数可表示为:rand()/(RAND_MA某+1.0)。

操作步骤 步骤1编辑源程序代码。

程序代码如下:

#include#include\intmain(){inti,j;

j=1+(int)(10.0某rand()/(RAND_MA某+1.0));printf(\}

printf(“\\n”);}

4

问题思考:

(1)编写一个猜数游戏的程序,先产生一个随机数,要求测试者输入一个数,计算机会提示猜大了,猜小了或恭喜您猜中了,直到猜中,退出程序;

5

合集下载

基于Linux的C语言编程(二)

基于Linux的C语言编程(二)

:T三 

●●一● 0l “10 101”1(]10}0l0101 010l0IOl01O1 0j0j 0l0l0】01 010l‘(—— ——1: ‘.1.。 

..f— :j —;, 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 

随着现在的软件工程日益复杂和大型化.^们越来越看 

重模块的封装性。模块间存在着相互联系,错综复杂 如果一 

个模块改动以后.其他一些与之有关联的模块也不能使用了. 

这种情况下.传统的的方法是重新惨改各个模块,然后再对他 们进行重新编译.重新连接.然后形成新的可执行文件。在大 

型的开发项目中.通常有几十至 上百个的源文件.如果每次均 

手工键八gcc命令进行编译的话.则会非常不方便。因此,人 

l『1通常利用make]_具来自动完成编译工作。这些工作包揖如 

果仅修改了某几个源文件.则只重新编译这几个源文件;如果 某个头文件被惨改了.则重新编译所有包含该头文件的源文 件。利用这种自动编译可大大简化开发工作.避免不必要的重 

新编译。当修改了其中某个源文件时 如果其他源文件依赖于 

该文件,则也要重新编译所有依赖该文件的源文件。makefile 

文件是许多编译器,包括windows NT下的编译器维护编译信 

息的常用方{去,只足在集成开发环境中,用户通过友好的界面 

修改makefi]e文件而已。 

默认情况下.G州make工具在当前工作目录中按如下顺 

序搜索 ̄akefil e: 

1_GNl ̄akefile 

2.makefi]e 

3.Yakef Jle 

习惯使用 ̄/lakefi le作为makefile文件 格式为:make 

f makeflle/lame 

I mkeft1e呐甄结蜩 

I makeflle中一般包含如下内容: 

l 1.需要由make工具 0建的项目,通常是目标文件和可执 

《计算机操作系统》实验指导书

《计算机操作系统》实验指导书

GB6017.1-20起重机械安全规程-第1部分

ih

《计算机操作系统》

实验指导书

(适合于计算机科学与技术专业)

湖南工业大学计算机与通信学院

二O一四 年 十月 GB6017.1-20起重机械安全规程-第1部分

ih

前言

计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。

为了收到良好的实验效果,编写了这本实验指导书。在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。

Linux下C语言编程:编写函数,删除字符串中的空格

Linux下C语言编程:编写函数,删除字符串中的空格

Linux下C语言编程:编写函数,删除字符串中的空格.

//一维字符串数组" h a sdf g "

//指针指着第一个元素,判断是否为零,为零则++,不为零则赋值给另一个指针

//再把两个指针都++操作

//最后需要把新的数组后加'\0'

#include

void del_space (char *s1);

//定义,定义后面要加分号";"表示语句结束

int main(int argc,char*argv[])

{

char s[] = " h a sdf g " ;

puts(s);

//字符串输出

del_space(s);

//调用删除空格函数

puts(s);

//打印删除空格后的字符串

return 0;

}

void del_space (char *s1)

//实现部分,后面不加封号";"表示语句没有结束 {

char *s2;

//去空格后保存的位置

s2 = s1;

//赋初值

while (*s1) {

if (*s1 != ' ')

{

*s2 = *s1;

s1 ++;

s2 ++;

}

else

{

s1 ++;

}

}

*s2 = '\0'; //新字符串最后加'\0'

}

结果:

>> h a sdf g

>>hasdfg

操作系统原理实践报告(2篇)

操作系统原理实践报告(2篇)

第1篇

一、引言

操作系统是计算机系统中最基本的系统软件,它负责管理计算机的硬件资源和软件资源,为用户和其他程序提供运行环境。为了更好地理解操作系统的原理,我们进行了一次操作系统原理的实践。以下是本次实践的详细报告。

二、实践目的

1. 理解操作系统的基本原理和功能;

2. 掌握操作系统的基本操作和命令;

3. 熟悉操作系统的调试和优化方法;

4. 提高实际操作能力,为今后从事计算机相关工作打下基础。

三、实践内容

1. 操作系统概述

操作系统是一种系统软件,负责管理计算机的硬件资源和软件资源。它具有以下功能:

(1)进程管理:负责进程的创建、调度、同步和通信等;

(2)内存管理:负责内存的分配、回收和保护等;

(3)文件管理:负责文件的创建、删除、读写和保护等;

(4)设备管理:负责设备的分配、控制和调度等;

(5)用户接口:提供用户与计算机交互的界面。

2. 操作系统基本操作和命令

在实践过程中,我们学习了以下操作系统的基本操作和命令:

(1)进程管理:创建进程、查看进程信息、杀死进程等;

(2)内存管理:查看内存信息、释放内存等;

(3)文件管理:创建文件、删除文件、查看文件信息等; (4)设备管理:查看设备信息、控制设备等;

(5)用户接口:登录、注销、切换用户等。

3. 操作系统调试和优化

在实践过程中,我们学习了以下操作系统调试和优化方法:

(1)使用调试工具:如gdb、windbg等;

(2)分析系统性能:如CPU使用率、内存使用率等;

(3)优化代码:如减少循环次数、提高数据结构效率等;

(4)调整系统参数:如调整内存分配策略、优化进程调度算法等。

四、实践过程

1. 安装操作系统

首先,我们需要在计算机上安装一个操作系统,如Windows、Linux或macOS。在安装过程中,我们需要选择合适的操作系统版本、分区、驱动程序等。

2. 学习操作系统基本操作和命令

在安装完成后,我们开始学习操作系统的基本操作和命令。通过查阅资料和实际操作,我们掌握了进程管理、内存管理、文件管理、设备管理和用户接口等方面的知识和技能。

实验四 Linux下的C语言编程

实验四  Linux下的C语言编程

1 实验四 Linux 下的 C 语言编程

实验类别:设计型 实验时数:6 学时

开课单位:计算机学院 实验地点:健翔校区计算中心

一、实验目的

通过本实验练习,使学生掌握有关文件管理与文件操作的内容。首先要熟悉在 LINUX 系统下文件系统的构建方法;其次要熟练掌握在 LINUX

环境下用 C 语言进行高级编程的方法(即有关文件操作的系统调用的使用),进而充分了解 LINUX 文件系统中 shell 命令的实现原理以及它们用到的系统调用。

二、实验环境

操作系统:Unix/Linux 及 Sun Solaris 或 windows 系列

应用系统:gcc 编译器。若 OS 为 windows 系列,则还需相应的模拟环境

三、预备知识

1、关于系统调用和库函数

C 语言支持一系列的库函数的调用,其中最基本的是 studio 库函数。事实上,库函数只是 C 语言在较高层次上调用的方式,系统调用是更低层次的与 C 语言的界面,是内核提供给用户调用的函数。

2、LINUX 环境下系统调用和库函数的异同

⑴C 程序使用系统调用的语句和调用库函数的语句形式完全相同,但是二者运行的环境和运行机制截然不同。

⑵从运行环境来看,库函数使用依赖于所运行的用户环境,程序调用库函数时,它运行的目标代码是属于程序的,程序处于“用户态”执行; 而系统调用的使用不依赖于它运行的用户环境,是 LINUX 内核提供 2 的低层服务,系统调用时所执行的代码是属于内核的,程序处于“核心态”执行。

⑶程序库函数的调用最终还是要通过 LINUX 系统调用来实现,库函数一般执行一条指令,该指令(操作系统陷阱 operating system trap)

将进程执行方式变为核心态,然后使内核为系统调用执行代码。

四、实验内容

本实验要求在 LINUX/UNIX 环境下用 C 语言编写三个具体的 SHELL

命令,基本涉及了 LINUX/UNIX 文件系统中较为常用的有关文件操作的系统调用。内容如下:

Linux基础与应用实验一

Linux基础与应用实验一

河南工业大学 Linux基础与应用 实验报告

专业班级: 学号: 姓名: 指导老师: 评分:

实验题目:虚拟机上安装Linux系统

实验目的:了解虚拟机软件,掌握在虚拟机上安装Linux系统的方法。

实验内容:在虚拟机VMware上安装Ubuntu Linux系统;在虚拟机上使用和操作Ubuntu Linux系统。

实验步骤:(将安装过程按照步骤写出,并将安装过程的重要环节截图)

步骤1 XXXXX

图1

步骤2 XXXXX

图2

。。。。

实验体会:(200字以内)

要求:双面打印,截图的大小合适,可以将两个图放在一行。

Linux操作系统下C语言编程入门

linux操作系统下

c语言编程入门

(一)目录介绍

1)Linux程序设计入门--基础知识

2)Linux程序设计入门--进程介绍

3)Linux程序设计入门--文件操作

4)Linux程序设计入门--时间概念

5)Linux程序设计入门--信号处理

6)Linux程序设计入门--消息管理

7)Linux程序设计入门--线程操作

8)Linux程序设计入门--网络编程

9)Linux下C开发工具介绍

(二)具体内容

1)Linux程序设计入门--基础知识

Linux下C语言编程基础知识

前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 头文件和系统求助

----------------------------------------------------------------------------

----

1.源程序的编译

在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们

以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c):

int main(int argc,char **argv) { printf("Hello Linux\n"); } 要编译这个程序,我们只要在命令行下执行: gcc -o hello hello.c gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程序的输出 结果了.命令行中 gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译器给我们输出的可执行文件名为hello 而hello.c是我们的源程序文件. gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已经知道了,表示我们要求输出的可执行文件名. -c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件. -g选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息. 知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了,如果你想要知道更多的选项,可以查看gcc的帮助文档,那里有着许多对其它选项的详细说明.

8个基础Linux编程基础实验

Linux编程基础A

实验指导书

计算机科学与技术学院

2011.9

注意事项

1.实验报告封面及报告纸请自行领取。

2.实验报告封面及报告纸的各项内容务必填全。

3.一次上机实验一张报告纸(8次实验共8张)。

4.实验报告上的各栏目严格按本指导书填写。

5.实验地点:9号楼北侧5层507网络实验室。

6.实验时间:第3、5、8、10、11、13、14、15周的周二12节、周四晚上910节。

实验1

实验项目:Linux系统常用命令的使用(编码:E1202801)

实验目的:熟练掌握Linux操作系统常用命令的用法和主要选项。理解文件与目录的基本概念,以及输入输出重定向和管道的概念与用法。

实验仪器:装有Linux操作系统的PC机。

原理概述:

Linux操作系统有图形操作界面,也有命令行操作界面。各类命令可以完成Linux操作系统的全部操作与配置。用户输入命令后,由shell解释执行。Linux以树形结构组织所有的文件与目录,没有Windows中盘符的概念。输入输出重定向可以把输入与输出重新定向到用户指定的地方,管道则可以把多个命令的输入输出连接起来。

实验内容步骤:

1.根据教材练习以下功能:

切换Linux虚拟控制台,输出输入重定向,管道,通配符,

2.根据教材练习以下常用命令:

cat,more,less,cp,rm,mv,mkdir,rmdir,cd,pwd,ls,grep,ln,tar,gzip,unzip,echo,cal,date,clear,rpm,man。

数据记录表及处理:

记录某些命令的输出。

实验结论及问题讨论:

自己总结。

实验2

实验项目:Linux系统的基本操作(编码:E1202802)

实验目的:掌握Linux系统的基本操作方法,包括启动与关闭Linux,Linux图形界面的使用,Linux下常用软件的使用。

实验仪器:装有Linux操作系统的PC机。

原理概述:

实验三:Linux编程基础

Linux编程基础实验报告

学院名称 :

实验名称 :

班级 :

学生姓名 :

学号(班内序号) :

【实验名称】

Linux进程调度

【实验目的】

了解Linux的进程调度问题,编写程序,实现生产者与消费者之间的进程调度,使两者之间有秩序的进行。

【实验内容】

编写程序,在Linux虚拟系统中,将原有的程序插入进程调度的P/V操作,实现生产者与消费者问题。

【实验结果】

【实验分析与心得体会】

本次实验主要是编写关于信号量的程序,即我们所学的PV操作。该实验老师一讲部分代码写好,我们只需添加两个信号量empty和full就可以了,试验中,我们不知道到底在那部分添加信号量的有关操作,通过和同学的讨论及反复尝试,终于完成了实验。通过该实验,进一步了解了书上所说的消费者与生产者问题,是如何形成与实现的,对操作系统的了解更深了一些。对于以前困扰我的PV操作也更加清楚了。

Linux系统下C语言编程及技巧研究

Linux系统下C语言编程及技巧研究

Linux是一种自由和开放源代码的类Unix操作系统,广泛用于服务器领域。同时,Linux系统也是许多开发者和程序员首选的开发环境。因此,掌握在Linux系统下C语言编程及技巧非常重要。本文将重点介绍在Linux下进行C语言编程的一些技巧和要点。

1. GNU编译器工具集(GCC)

GCC是 GNU编译器工具集的简称,支持多种编程语言,如C、C++、Objective-C、Java等。在Linux系统下,GCC是编译C程序的主要工具。开发者可以通过命令行或集成式开发环境(IDE)使用GCC。

2. 环境变量

环境变量是Linux系统的重要概念,能够帮助开发者方便地访问系统资源和软件库。开发者可以通过设置环境变量,指定GCC的默认搜索路径和库路径。

例如,下列命令可将环境变量C_INCLUDE_PATH设置为当前目录:

export C_INCLUDE_PATH=.

3. 头文件

头文件在C语言程序的编写过程中是非常重要的。Linux系统提供了许多C语言头文件,例如stdio.h、stdlib.h等。开发者也可以根据需求编写自己的头文件。

在编写程序时,一定要正确地包含头文件。否则编译器将无法识别预定义的类型和函数。例如,下列程序演示了如何使用stdio.h头文件中的printf函数:

4. 动态链接库

动态链接库(Dynamic Linking Libraries,DLL)提供了跨多个程序共享函数和代码的能力。在Linux系统下,动态链接库通常以.so文件形式出现。开发者可以通过指定链接器选项使用动态链接库。

例如,下列命令将可执行文件myprog连接到数学库libm.so:

gcc -o myprog myprog.c -lm

5. 调试器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档