文档库 最新最全的文档下载
当前位置:文档库 › Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写

Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写

Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写
Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写

实验二:gcc、gdb、Makefile的使用

●实验目的:

(一)学会使用gcc编译器

(二)学会gdb调试器的使用

(三)学会编写Makefile

●实验要求:

(一)编写一应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-O2等选项(二)编写一应用程序,使用gdb调试,调试中使用到该小节所介绍的所有命令

(三)实现一应用程序,该程序有两个c文件构成,使用makefile来完成对该程序的编译●实验器材:

软件:安装了Linux的vmware虚拟机

硬件:PC机一台

●实验步骤:

(一)gcc编译器

1、先用vi编辑hello.c文件,内容如下:

2、gcc指令的一般格式为:gcc [选项] 要编译的文件[选项] [目标文件]

例:使用gcc编译命令,编译hello.c生成可执行文件hello,并运行hello

上面的命令一步由.c文件生成了可执行文件,将gcc的四个编译流程:预处理、编译、汇编、连接一步完成,下面将介绍四个流程分别做了什么工作

3、-E选项的作用:只进行预处理,不做其他处理。

例:只对hello.c文件进行预处理,生成文件hello.i,并查看

通过查看可以看到头文件包含部分代码#include 经过预处理阶段之后,编译器已将stdio.h的内容贴了进来。

4、-S选项的使用

-S选项的作用:只是编译不汇编,生成汇编代码

例:将hello.i文件只进行编译而不进行汇编,生成汇编代码hello.s

5、-c选项的使用

-c选项的作用:只是编译不连接,生成目标文件.o

例:将汇编代码hello.s只编译不链接成hello.o文件

6、将编译好的hello.o链接库,生成可执行文件hello

7、-static选项的使用

-static选项的作用:链接静态库

例:比较hello.c连接动态库生成的可执行文件hello和链接静态库生成的可执行文件hello1的大小

可以看到静态链接库的可执行文件hello1比动态链接库的可执行文件hello要大的多,他们的执行效果是一样的

8、-g选项的使用

-g选项的作用:在可执行程序中包含标准调试信息

例:将hello.c编译成包含标准调试信息的可执行文件hello2

带有标准调试信息的可执行文件可以使用gdb 调试器进行调试,以便找出逻辑错误 9、-O2选项的使用

-O2选项的作用:完成程序的优化工作

例:将hello.c 用O2优化选项编译成可执行文件hello3,和正常编译产生的可执行文件hello 进行比较

(二)gdb 调试器

1、先用vi 编辑文件test.c 用于gdb 调试器调试,内容如下

2、将test.c 文件编译成包含标准调试信息的文件test

#include int main(void) { int sum(int sum); int i,result=0; sum(100); for(i=1;i<=100;i++){ result+=i; } printf("The sum in main function is %d\n",result); return 0; }

int sum(int num) { int i,n=0; for(i=0;i<=num;i++){ n+=i; } printf("The sum in sum function is %d\n",n); }

3、启动gdb进行调试

可以看到gdb启动界面中显示了gdb的版本、自由软件等信息,然后进入了有”gdb”开头的命令行界面

4、l(list)命令

l命令用于查看文件

可以看到每行代码面前都有对应的行号,这样方便我们设置断点。

5、b(breakpoint)命令

b用于设置断点,断点调试时调试程序的一个非常重要的手段,设置方法:在”b”命令之后加上对应的行号,如下图

在gdb中可以设置多个断点。代码运行时会到断点对应的行之前暂停,上图中,代码就会运行到第7行之前暂停(并没有运行第7行)。

6、info命令

info命令用于查看断点情况,设置好断点后可以用它来查看

7、r(run)命令

r命令用于运行代码,默认是从首行开始运行,也可以在r后面加上行号,从程序中指定行开始运行。

可以看到程序运行到断点处就停止了

8、p(print)命令

p命令用于查看变量的值,在调试的时候我们经常要查看某个变量当前的值与我们逻辑设定的值是否相同,输入p+变量名即可

可以看到result在第6行已被赋值为零,而i目前还没有被赋值所以是一个随机数,在主函数里看不到num的值,只有进入子函数才能看到

9、s(step)命令

s命令用于单步运行,另外n(next)命令也用于单步运行,他们的区别在于:如果有函数调用的时候,s会进入该函数而n不会进入该函数。

可以看到进入了sum子函数,这时候就能看到num的值为100。

10、n(next)命令

n命令用于单步运行,下面是n命令的使用:

和s命令的运行效果对比会发现,使用n命令后,程序显示函数sum的运行结果并向下执行,而使用s命令后则会进入到sum函数之中单步运行

11、finish命令

finish命令用于运行程序,直到当前函数结束。例如我们进入了sum函数,使用finish 命令的情况

当我们调试的时候如果觉得某个函数存在问题,进入函数调试之后发现问题不在这个函数,那么我们就可以使用finish命令运行程序,知道当前函数结束。

12、c命令用于恢复程序的运行,例如我们再一个程序中设置了两个断点,而觉得问题不会再这两个断点之间的代码上,那么我们局可以在查看完第一个断点的变量及堆栈情况后,使用c命令恢复程序的正常运行,代码就会停在dier个断点处

13、q(quit)命令

q命令用于退出gdb调试器

(三)Makefile文件的编写

1、先用vi编辑一个简单的c程序,由两个文件组成

文件fun.c内容

#include "fun.h"

int max_fun(int x,int y)

{

if(x>=y)

return x;

else

return y;

}

文件main.c内容

#include "fun.h"

int main(void)

{

int a,b;

printf("Please enter the number a and b\n");

scanf("%d%d",&a,&b);

int max=0;

max=max_fun(a,b);

printf("The max number is %d\n",max);

return 0;

}

文件fun.h内容

#include

extern int max_fun(int x,int y);

2、使用gcc编译命令直接编译出可执行文件main,并运行查看结果.

3、用vi编辑makefile,内容如下所示

main:main.o fun.o

gcc main.o fun.o -o main

main.o:main.c fun.h

gcc -c main.c -o main.o

fun.o:fun.c fun.h

gcc -c fun.c -o fun.o

clean:

rm -f main *.o

4、退出并保存,在shell中键入make,查看并运行产生的可执行文件main

5、用vi打开makefile进行改写,用变量进行替换,经变量替换后的makefile如下OBJS=main.o fun.o

CC=gcc

CFLAGS=-c

main:$(OBJS)

$(CC) $(OBJS) -o main

main.o:main.c fun.h

$(CC) $(CFLAGS) main.c -o main.o

fun.o:fun.c fun.h

$(CC) $(CFLAGS) fun.c -o fun.o

clean:

rm -f main *.o

退出保存后,在shell中执行make和make clean命令的效果和前面第4步是一样的

6、改写makefile,使用自动变量,改写后的情况如下

OBJS=main.o fun.o

CC=gcc

CFLAGS=-c

main:$(OBJS)

$(CC) $(OBJS) -o $@

main.o:main.c fun.h

$(CC) $(CFLAGS) $< -o $@

fun.o:fun.c fun.h

$(CC) $(CFLAGS) $< -o $@

clean:

rm -f main *.o

退出保存后,在shell中执行make和make clean命令的效果和前面一样

上机报告要求:

1、总结选项-o,-E,-S,-c,-static,-g的功能作用。

-o指定目标文件名称

-E选项的作用:只进行预处理,不做其他处理。

-S选项的作用:只是编译不汇编,生成汇编代码

-c选项的作用:只是编译不连接,生成目标文件.o

-static选项的作用:链接静态库

-g选项的作用:在可执行程序中包含标准调试信息

2、启动gdb的方式有几种?分别如何启动?

1)gdb +调试程序名

2)gdb

file 调试程序名

3、总结gdb中step命令与next命令的区别?finish命令与quit命令的区别?

s命令用于单步运行,另外n(next)命令也用于单步运行,他们的区别在于:如果有函数调用的时候,s会进入该函数而n不会进入该函数。

finish命令用于运行程序,直到当前函数结束。q命令用于退出gdb调试器

4、编写makefile文件的三大构成要素是什么?分析第三个步骤的makefile,指出这三大要素分别对应的具体代码?

目标:依赖命令

main:main.o fun.o

(Tab)gcc main.o fun.o -o main

main.o:main.c fun.h

(Tab)gcc -c main.c -o main.o

fun.o:fun.c fun.h

(Tab)gcc -c fun.c -o fun.o

clean:

(Tab)rm -f main *.o

Linu系统编程实验二gccgdb的使用以及Makefile文件的编写

实验二:gcc、gdb、Makefile的使用 实验目的: (一)学会使用gcc编译器 (二)学会gdb调试器的使用 (三)学会编写Makefile 实验要求: (一)编写一应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-O2等选项(二)编写一应用程序,使用gdb调试,调试中使用到该小节所介绍的所有命令 (三)实现一应用程序,该程序有两个c文件构成,使用makefile来完成对该程序的编译实验器材: 软件:安装了Linux的vmware虚拟机 硬件:PC机一台 实验步骤: (一)gcc编译器 1、先用vi编辑文件,内容如下: 2、gcc指令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件] 例:使用gcc编译命令,编译生成可执行文件hello,并运行hello 上面的命令一步由.c文件生成了可执行文件,将gcc的四个编译流程:预处理、编译、汇编、连接一步完成,下面将介绍四个流程分别做了什么工作 3、-E选项的作用:只进行预处理,不做其他处理。 例:只对文件进行预处理,生成文件,并查看 通过查看可以看到头文件包含部分代码#include <>经过预处理阶段之后,编译器已将的内容贴了进来。 4、-S选项的使用 -S选项的作用:只是编译不汇编,生成汇编代码

例:将文件只进行编译而不进行汇编,生成汇编代码 5、-c选项的使用 -c选项的作用:只是编译不连接,生成目标文件.o 例:将汇编代码只编译不链接成文件 6、将编译好的链接库,生成可执行文件hello 7、-static选项的使用 -static选项的作用:链接静态库 例:比较连接动态库生成的可执行文件hello和链接静态库生成的可执行文件hello1的大小 可以看到静态链接库的可执行文件hello1比动态链接库的可执行文件hello要大的多,他们的执行效果是一样的 8、-g选项的使用 -g选项的作用:在可执行程序中包含标准调试信息 例:将编译成包含标准调试信息的可执行文件hello2

数据的基本统计与非参数检验

北京建筑大学 理学院信息与计算科学专业实验报告 课程名称《数据分析》实验名称数据的基本统计与非参数检验实验地点基C-423 日期2016 . 3 .17 姓名班级学号指导教师成绩 【实验目的】 (1)熟悉数据的基本统计与非参数检验分析方法; (2)熟悉撰写数据分析报告的方法; (3)熟悉常用的数据分析软件SPSS。 【实验要求】 根据各个题目的具体要求,完成实验报告 【实验内容】 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分别对数据的“家庭收入”、“现住面积”,进行数据的基本统计量分析,撰写相应的分析报告; 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分别分析不同学历对家庭收入、现住面积是否有显著影响,撰写相应的分析报告。 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分析家庭收入与10000元是否有显著差异,撰写相应的分析报告。 根据附件“住房状况调查”给出的相关数据,请选用恰当的分析方法,分析婚姻状况对家现住面积是否有显著影响,撰写相应的分析报告。 根据附件“减肥茶数据”给出的相关数据,请选用恰当的分析方法,分析该减肥茶对减肥是否有显著影响,撰写相应的分析报告。 【分析报告】 1. 表一家庭收入和现住面积的基本描述统计量 家庭收入现住面积 N 有效2993 2993 缺失0 0 均值17696.1567 62.7241

均值的标准误279.64310 .47349 中值15000.0000 60.0000 众数10000.00 60.00 标准差15298.80341 25.90383 方差 2.341E8 671.008 偏度 5.546 .910 偏度的标准误.045 .045 峰度55.425 3.078 峰度的标准误.089 .089 百分位数25 10000.0000 45.0000 50 15000.0000 60.0000 75 20000.0000 80.0000 表一说明, 家庭收入方面: 被调查者中家庭收入的均值为17696.16元,中值为15000元,普遍收入为10000元; 家庭收入的标准差和方差都相对较大,所以,各家庭收入之间有明显的差异; 偏度大于零,说明右偏;峰度大于零,说明数据呈尖峰分布; 由家庭收入的四分位数可知,25%的家庭,收入在10000以下,有50%的家庭,收入在15000以下,有75%的家庭,收入在20000以下; 现住面积方面: 被调查者中现住面积的均值为62.724平方米,中值为60平方米,普遍面积为60平方米; 现住面积的标准差和方差都相对较大,所以,各家庭现住面积之间有明显的差异; 偏度近似等于零,说明现住面积数据对称分布;峰度大于零,说明现住面积数据为尖峰分布; 由现住面积的四分位数可知,25%的家庭,现住面积为45平方米以下,有50%的家庭,现住面积在60平方米以下,有75%的家庭,现住面积在80平方米以下。 图一:家庭收入直方图 该图表明,家庭收入分布存在一定的右偏。 图二:现住面积直方图

实验教学模式

2006年9月浙江省全面实施新课程,综观高中物理新教材,关于实验内容及方式方法有许多新的改变和拓展,本文就新课程下如何构建高中物理实验教学模式作以探索。 1新课程加强了实验教学,提升了实验教学地位 物理实验在物理教学中占有重要的地位,它既是物理教学的基础,也是物理教学的内容、方法、手段,在新课程标准的物理教学中倡导学生自主学习、研究性学习,加强科学探究,《课程标准》第三部分专门列入一项——科学探究及物理实验能力要求,列表说明探究要素和基本要求,所以实验在物理教学中的地位不但没有削弱,还大大加强了,因为实验既能为学生的自主学习、科学探究打下基础,又能为学生的自主学习、科学探究提供物质的保证,在学生智能结构的发展中占有重要的地位。实验在新课程中笔者认为有3个特点: 1)实验与其他教学内容紧密结合,不再规定“必做”实验。凡是《课程标准》要求“通过实验”教学的内容都安排了实验;将原来实验中的演示实验和学生实验融合在内容标准之中,使它们成为有机的整体,不再单独列出。 2)实验内容明显增多,有示范性实验、探究性实验、演示实验、分组实验、“做一做”小实验,另外还设计了以实验为背景的“问题与练习”、“课题研究”栏目,而且学生分组实验和探究性实验完全安排在课堂教学中进行,进一步确立了物理知识体系与实验的依赖关系,凸显实验教学的重要,真正做到还给学生实验探索空间,由静态变为动态,由独立变为合作,由观察者变为探索者,由单纯动脑变为手脑并用,调动学生实验的积极性。 3)新教材没有对实验的具体做法、使用的器材等做硬性的规定,这样便于因地制宜开展实验教学,便于提出不同实验方法,有利于实验设计,使师生更注重实验的科学思想,而不是记忆实验器材、步骤等条文,不过分强调实验数据的精确和操作技能,而是更注重实验设计,因为实验设计的思想更能提高学生的心智技能。 物理课程标准的理念改变了物理实验教学的目标、性质和模式,从单纯为了学习知识验证理论及学习操作技能,转变为以全面地培养学生科学素养为目标的课程,实验教学对于实现“知识与技能、过程与方法、情感态度与价值观”三维教学目标有独到作用。 2学生所需的实验教学 以往的高中物理实验教学在实现上述重要的教学功能上存在诸多问题,其中一个问题就是缺乏对学习的主体——学生的实验心理需求的研究。也就是说,教师往往根据教学和应试的要求,少有考虑到学生对实验的喜好与厌恶的心理需求,来安排实验教学。以至于在高中物理实验教学中充斥着他主性的、机械的、乏味的、缺少探究性的教学范式。课题组认为,要有效发挥物理实验在“知识与技能、过程与方法、情感态度与价值观”等方面的教学功能,实验教学应当研究学生的心理需求。笔者和同事10月中旬对1所重点中

GDB基本使用方法

GDB基本使用方法 GDB是用来调试用户态程序的一款工具,可以追踪程序运行轨迹,打出调用栈,寄存器内容,查看内存等等 首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的-g 参数可以做到这一点。如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。 启动GDB 直接找到gdb的路径执行就ok,进入GDB后可以输入help命令查看帮助信息 加载可执行文件启动 gdb executable-file set args 参数列表 以上两步等同于 gdb –args executable-file 参数列表 run或者start都可以启动调试 多用于调试启动阶段就异常的程序 调试正在运行的程序 以下三种形式都可以attach到正在运行的程序上调试 ps -ef | grep http www-data 24470 1 0 Jan17 ? 00:00:14 /usr/sbin/lighttpd gdb attach 24470 gdb --pid 24470 gdb -p 24470 设置断点 break -- Set breakpoint at specified line or function b func1 break func1 设置在func1处 b file:line 设置在文件的第几行处 b *0x指令地址设置在具体的某条汇编指令处 设置断点后,代码执行到func1处会被断住,方便我们查看当时的信息 打印调用栈 backtrace bt 如果你要查看栈下面层的详细信息 frame 栈中的层编号 查看所有断点 info break 删除断点 delete 断点号 如果不加断点号为删除全部断点 禁用断点 disable 断点号 启用断点

探析开放性实验教学模式

探析开放性实验教学模式 我们国家非常的重视开放性实验教学的模式,这种教学的模式当前正在被广泛的使用,因为当前我们国家的以一些教育的机构非常重视人才资源的提供,国家的发展需要人才,我们国家现在的发展逐渐的变慢,因为在迅猛的发展当中严重的破坏了环境和污染了自然的资源,造成了当前的严峻形势,因此,想要实现和谐社会的构建,实现可持续发展,必须要努力的为国家提供大量的优秀人才,不断的出谋划策,能够解决国家当前的危机,使得国家发展的更加迅速。 标签:开放性;实验;教学;模式;研究分析 1.前言 我们国家的发展水平正在逐渐的提高,但是相对于发达国家来说,我们国家的发展存在较多的问题,因为国家的发展起步非常的晚,经济实力也不够,中国的人口数量还是非常的多,这些问题的存在导致国家在不断的发展当中逐渐的显现出一些问题,因此,为了能够提高我们国家的经济实力,使得各个行业都能够稳定的增长,解决存在的问题,必须要采取有效的教学方案,教学方案的实施效率直接的影响着我们国家的未来,所以,为了更好的未来,必须要提高教育建设。 2.开放性实验教学模式 实验教学在学生培养方面具有非常重要的作用,除了具有巩固验证理论知识或达到具体的研究目标的作用之外,还具有培养学生探索未知世界方法、勇气、创新能力和综合素质的作用。在传统实验教学中,从实验仪器准备到实验方法的确定,基本上都是由教师事先安排好,学生只是被动的接受和效仿,不利于调动学生创新积极性。传统的实验教学方式已不能满足目前多元化社会对学生动手能力、创新能力及竞争能力的需求。相对于传统的、封闭的实验教学,开放式实验是指实验时间、内容和教学方法等方面的开放,学生有自主选择权,它能为学生的主动学习和个性发展创造一个良好的外部环境,体现了以人为本的教学理念。实行全方位、多层次的开放式教学是实验教学改革的必然趋势和发展方向。开放式实验有助于激发学生的学习兴趣,培养学生发现问题、分析问题、解决问题的能力,对于学生综合素质的提高,创新意识和实践能力的培养极为重要。 关于开放式实验教学模式的研究可追溯到上世纪60年代,研究表明,开放式实验教学可以较好地培养学生的科研兴趣和综合素质,并可以提高本科生的合作能力、表达能力和解决问题的能力。近年来,开放式实验教学也引起了国内教育者的重视,众多高校都进行了尝试,根据学生知识结构的不同,开设综合性、创新性、设计性等不同层次的开放实验,取得了一定的效果,但却忽视了实验室管理模式的同步改革。 通过开放式实验教学的开展,树立了师生创新的教学理念和新的教学方法。该教学模式是根据大学生心理特点,运用教育学理论中的“读书指导法和发现

Linu系统编程实验gccgdb的使用以及Makefile文件的编写

实验二:gcc 、gdb 、Makefile 的使用 实验目的: (一) 学会使用gcc 编译器 (二) 学会gdb 调试器的使用 (三) 学会编写 Makefile 实验要求: (一) 编写一应用程序,使用 gcc 进行编译,并分别使用-o ,-g ,-static ,-02等选项 (二) 编写一应用程序,使用 gdb 调试,调试中使用到该小节所介绍的所 有命令 (三) 实现一应用程序,该程序有两个 c 文件构成,使用 makefile 来完成对该程序的编译 实验器材: 软件:安装了 Linux 的vmware 虚拟机 硬件:PC 机一台 实验步骤: (一) gcc 编译器 1先用vi 编辑hello.c 文件,内容如下: #include int main(void) { priritf("hello world\n"); return 0; } 2、gcc 指令的一般格式为:gcc [选项]要编译的文件[选项][目标文件] 例:使用gcc 编译命令,编译 hello.c 生成可执行文件 hello ,并运行hello gcc]# vi hello ? c gcc]# gcc hello.c -o hello gcc]# ./hello 上面的命令一步由.c 文件生成了可执行文件,将 gcc 的四个编译 流程:预处理、编译、 汇编、连接一步完成,下面将介绍四个流程分别做了什么工作 3、 -E 选项的作用:只进行预处理,不做其他处理。 例:只对hello.c 文件进行预处理,生成文件 hello.i ,并查看 [root@locdlhost gcc ]# gcc -E hello ?匚-o hello * i [root (alocalhost gcc ]# Is hello hel lo.c: hel lo.i 通过查看可以看到头文件包含部分代码 #include 经过预处理阶段之后,编译 器已将stdio.h 的内容贴了进来。 4、 -S 选项的使用 -S 选项的作用:只是编译不汇编,生成汇编代码 [root@localhost [root@localhost [root@localho5t hello world [rootglocalhost gcc]#

物理实验中的开放型教学模式

概述 大学物理实验作为一门基础而独立开设的课程,其目的要求在国家教委制定的有关基本要求中有充分阐述。我们体会其中最为强调的可归结为培养学生的能力、作风、素质 ?能力 这能力是多方面的,通过物理实验需要培养的是观察现象的能力、透过现象研究规律的能力,从复杂的现象中抽取相关信息的能力、运用知识解决实际问题的能力、根据仪器说明书能正确使用仪器的能力、从事现代化科学实验的能力等。 ?作风 这里主要应强调科学的工作作风,如实事求是的作风,严肃认真的作风以及坚韧不拔的工作作风等。而对于培养学生的团结协作精神、爱护国家财产等观念也是不容忽视的。 ?素质 这素质的内涵是指由实验方面的基本知识、基本方法和基本技能的水平,对现象观察和分析的能力,以及良好的实验习惯和科学作风等综合的表现。学生能力强素质会好,学生工作作风好,实验素质好,有利于实验良好习惯的培养,如认真阅读仪器说明书和参考资料的习惯,认真了解仪器的操作使用方法并遵守操作规程的习惯,认真、完整、如实地记录实验原始数据的习惯,在实验过程中积极思考、深入探讨、运用知识去解决问题的习惯等。 大学物理实验作为大学生进校后第一门科学实验课程,不仅应让学生受到严

格的、系统的实验技能训练,掌握科学实验的基本知识、方法和技巧,更重要的是要培养学生严谨的科学思维方式和创新精神,培养学生理论联系实际,分析和解决实际问题的能力,特别是应掌握与科学技术的发展相适应的综合能力。 ?任务艰巨,责任重 中国科学技术大学天文与应用物理系几十年来长期承担着全校大学物理实验的教学任务,每年上实验课的学生多达五千多人、二十八万人时以上 ?大学物理实验课程的弊端 ●教学模式单一 ●内容比较陈旧 ●命题实验较多 ●操作步骤刻板 ●课时限制 学生一遇到问题就立即问老师,很多老师往往也不是去启发、引导学生如何解决实验中存在的问题,而是一味地替学生排除问题,结果自然是学生只知道这样做了,但不知道为什么要这样做。 学习结果: 知其然,而不知其所以然。 大大抑制了学生的创新思维,一门非常有用且有趣的实践性课程反而让学生感到“枯燥无味”,甚至反感做物理实验。每次做实验纯粹是应付,测完数据立

linuxvimgccgdb开发cc程序环境搭建

linux+vim+gcc+gdb开发C/C++程序环境搭建 我用的是ubuntu操作系统。打开终端 1.sudo apt-get install vim(vim-full 这个软件自9.10版本被废弃了,不论怎么添加软件源都找不到的,所以直接安装vim就可以了,,也可以安装gvim,,在新立得软件里面搜索vim 就可以找到了) 2.sudo apt-get install build-essential // build-essential是c语言的开发包,包含了gcc make gdb和libc函数库很多工具。 或者sudo apt-get install gcc + sudo apt-get install gdb 网上有很多版本说要编译安装,这个可能挺复杂的,而且花的时间也不少(没试过阿),,不想在命令行中安装的化,可以下载rpm包直接点击安装, 3.gcc只是一个编译器,vim是编辑器(也可以用gedit编辑源代码),gdb是调试器,, 可以新建一个test.c的helloworld文件测试以下 4.一般c程序就用gcc编译,c++程序就用g++编译

[介绍] ----------------------------------------- 常见用法: GCC 选项 GCC 有超过100个的编译选项可用。这些选项中的许多你可能永远都不会用到,但一些主要的选项将会频繁用到。很多的GCC 选项包括一个以上的字符。因此你必须为每个选项指定各自的连字符,并且就象大多数Linux 命令一样你不能在一个单独的连字符后跟一组选项。例如,下面的两个命令是不同的: gcc -p -g test.c gcc -pg test.c 第一条命令告诉GCC 编译test.c 时为prof 命令建立剖析(profile)信息并且把调试信息加入到可执行的文件里。第二条命令只告诉GCC 为gprof 命令建立剖析信息。 当你不用任何选项编译一个程序时,GCC 将会建立(假定编译成功)一个名为 a.out 的可执行文件。例如,下面的命令将在当前目录下产生一个叫 a.out 的文件: gcc test.c 你能用-o 编译选项来为将产生的可执行文件指定一个文件名来代替 a.out。例如,将一个叫count.c 的 C 程序编译为名叫count 的可执行文件,你将输入下面的命令: gcc -o count count.c 注意: 当你使用-o 选项时, -o 后面必须跟一个文件名。 -c 只编译并生成目标文件。 -------------------------------------------------------------------------------- gcc and g++分别是gnu的c & c++编译器gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解]

spss实验报告——非参数检验

实验报告 ——(非参数检验) 实验目的: 1、学会使用SPSS软件进行非参数检验。 2、熟悉非参数检验的概念及适用范围,掌握常见的秩和检验计算方法。 实验内容: 1、某公司准备推出一个新产品,但产品名称还没有正式确定,决定进行抽样调 查,在受访200人中,52人喜欢A名称,61人喜欢B名称,87人喜欢C 名称,请问ABC三种名称受欢迎的程度有无差别?(数据表自建) SPSS计算结果如下: 此题为总体分布的卡方检验。 零假设:样本来自总体分布形态和期望分布没有显著差异。即ABC三种名称受欢迎的程度无差别,分布形态为1:1:1,呈均匀分布。 观察结果,上表为200个观察数据对A、B、C三个名称(分别对应1,2,3)的喜爱的期望频数以及实际观察频数和期望频数的差。从下表中可以看出相伴概

率值为0.007小于显著性水平0.05,因此拒绝零假设,认为样本来自的总体分布与制定的期望分布有显著差异,即A、B、C三种名称受欢迎的程度有差异。 2、某村庄发生了一起集体食物中毒事件,经过调查,发现当地居民是直接饮用 河水,研究者怀疑是河水污染所致,县按照可疑污染源的大致范围调查了沿河居民的中毒情况,河边33户有成员中毒(+)和均未中毒(-)的家庭分布如下:(案例数据run.sav) -+++*++++-+++-+++++----++----+---- 毒源 问:中毒与饮水是否有关? SPSS计算结果如下: 此题为单样本变量值随机检验 零假设:总体某变量的变量值是随机出现的。即中毒的家庭沿河分布的情况随机分布,与饮水无关。 相伴概率为0.036,小于显著性水平0.05,拒绝零假设,因此中毒与饮水有关。 3、某试验室用小白鼠观察某种抗癌新药的疗效,两组各10只小白鼠,以生存日数作为观察指标,试验结果如下,案例数据集为:npara1.sav,问两组小白鼠生存日数有无差别。 试验组:24 26 27 30 32 34 36 40 60 天以上 对照组:4 6 7 9 10 10 12 13 16 16 SPSS计算结果如下: 此题为两独立样本非参数检验。 (1)两独立样本Mann-Whitney U检验:

简单反应时实验报告

标题:视觉简单反应时实验报告 作者:孙洁肖红艳普凤梅 班级:09应用心理学 学号:20091740107 20091740109 20091740126 日期:2011年6月24日

视觉简单反应时实验报告 孙洁(20091740107)肖红艳(20091740109)普凤梅(20091740126) (云南民族大学教育学院2009级应用心理学专业昆明 650031) 摘要:本实验采用闪电测反应速度测定装置测量了35名被试的视觉简单反应时,计算了其中3名被试的视觉简单反应时均值及标准差,进行了相应的比较;并对35名被试进行了视觉简单反应时的差异显著性检验,经过分析得到实验结果:(1)3名被试的视觉简单反应时存在很大的差异,特别是被试3的反应时与被试1、被试2的差异很明显;(2)全体被试的视觉简单反应时存在显著性差异,但在35名被试内进行的性别与组别的T检验都得出被试简单反应时不存在显著差别的结果,即本次实验没有存在练习效应。这与前人的实验研究结果相一致,也验证了实验假设的正确性。 关键词:简单反应时;视觉;差异 1.引言 1.1有关反应时的概念 反应时(简称RT)指刺激作用于有机体后到明显的反应开始时所需要的时间。刺激作用于感官引起感官的兴奋,兴奋传到大脑,并对其加工,再通过传出通路传到运动器官,运动反应器接受神经冲动,产生一定反应,这个过程可用时间作为标志来测量,这就是反应时。反应时最早由天文学家发现,后由生理学家和心理学家加以研究和发展。1873年,奥地利生物学家Exner首先提出“反应时间”这个概念。以后Wundt(冯特)把反应时间引用到他的心理实验室里,使得反应时间直接成为了心理学的研究课题。反应时是心理学研究中最重要的反应变量和指标之一,使用反应时作为指标的实验研究,曾对解决心理学理论问题和生活实际问题起到相当大的作用。 通常,反应时可分为简单反应时和选择反应时两类。简单反应时是指给被试呈现单一的刺激,只要求做单一的反应,并且两者是固定不变的,这时刺激与反应之间的时距就是简单反应时。简单反应时的实验已有一百多年的历史,最早始于天文学家对“人差方程”的研究,赫希(Hirsch, A.)在1861-1865 年间测量了视听与触觉的“生理时间”得到简单反应时的时值,光为180ms,声为140ms,触觉为140ms,这些数据到今天还算是相当标准的。 简单反应时比较短,并且具有通道差异性,因为感官换能的时间不同,研究表明训练有素的成人其视觉的简单反应时为150-230ms;此外反应时的个体差异也很大,所以我们提出假设:全体被试的视觉简单反应时存在显著性差异。 1.2实验目的 本实验涉及的是有关视觉简单反应时的研究。验的目的是:(1)学习视觉简单反应时的测定方法及其实验材料的整理与数据的处理;(2)学会比较视觉简单反应时的个体差异,分析全体被试视觉简单反应时是否存在显著性差异。1.3 实验指导语 这是一次视觉反应时间的测量实验,当你听到“预备”口令后,请你注意电脑屏幕的刺激呈现窗;当你看到闪电刺激后,就迅速按“OK”键(鼠标左键)上。不能提前按键或延迟较长时按键,否则测量无效,并重开一组。

实验一LinuxC编程工具GCC和GDB

淮海工学院计算机工程学 实验报告书 评语: 成绩:指导教师: 批阅时间:年月

实验目的与要求 1. 掌握Linux C 开发过程中的基本概念; 2. 掌握如GCC GDB等开发工具的使用。 二、实验内容 1. 将参考代码录入到文件中,编译执行后发现结果与预期不一致,请使用GDE调试, 完成字符串反序输出功能。 三、参考源代码 #include <> #include <> #include <> int reverse_str(char *string); int main (void) { char string[] = "Linux C Tools : GCC and GDB"; printf ("The original string is %s \n", string); reverse_str (string); } int reverse_str (char *str) { char *new_str; int i, size; size = strlen (str); if((new_str = (char *) malloc (size + 1)) == NULL) { return -1; } for (i = 0; i < size; i++) new_str[size - i] = str[i]; new_str[size+1] = ' '; printf("The reversed string is %s\n",new_str); free(new_str); return 0 ; } 四、实验步骤 步骤1. 编辑源代码 mkdir test1 cd test1 gedit (1) 使用gedit 编辑器,建议课外学习vim; (2) 分析代码中语句功能。 步骤 2. 编译源代码

Ubuntu下Vim GCC GDB安装及使用

Ubuntu下Vim+GCC+GDB安装及使用 一)安装 vim)打开命令行运行sudo apt-get install vim,并按提示输入管理员密码。 gcc+gdb)输入命令行运行 sudo apt-get install build-essential build-essential包含gcc和gdb等工具,是C语言的开发包。 安装完了可以执行 gcc --version 的命令来查看版本,输出如下: gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 则表明安装好了。 二)常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件。 4. 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件test.i汇编成test.s文件。 5. 选项 -c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 6. 无选项链接 用法:#gcc test.o -o test

非参数检验实验报告

实验报告 非参数检验 学院: 参赛队员: 参赛队员: 参赛队员: 指导老师:

目录 一、实验目的 (1) 1.了解假设检验的基本内容; (1) 2.了解卡方检验; (1) 3.了解二项分布检验; (1) 4.了解两个独立样本检验; (1) 5.学会运用spss软件求解问题; (1) 6.加深理论与实践相结合的能力。 (1) 二、实验环境 (1) 三、实验方法 (1) 1.卡方检验; (1) 2.二项分布检验; (1) 3.两个独立样本检验。 (1) 四、实验过程 (1) 问题一: (1) 1.1实验步骤 (2) 1.1.1输入数据 (2) 1.1.2选择:数据 加权个案 (2) 1.1.3选择:分析→非参数检验→旧对话框→卡方 (2) 1.1.4将变量面值放入检验变量列表 (3) 1.1.5观察结果 (3) 1.2输出结果 (3) 1.3结果分析 (3) 问题二: (3) 2.1问题叙述 (3) 2.2提出假设 (4) 2.3实验步骤 (4) 2.3.1导入excel文件数据 (4) 2.3.2二项分布检验 (5) 2.3.3输出结果 (6) 2.4结果分析 (6) 问题三: (6) 3.1实验步骤 (6) 3.1.1数据的输入 (6) 3.1.2选择 (7) 3.1.3检验变量 (7) 3.2输出结果 (7) 3.3结果分析 (9) 五、实验总结 (9)

参数检验 一、实验目的 1.了解假设检验的基本内容; 2.了解卡方检验; 3.了解二项分布检验; 4.了解两个独立样本检验; 5.学会运用spss软件求解问题; 6.加深理论与实践相结合的能力。 二、实验环境 Spss、office 三、实验方法 1.卡方检验; 2.二项分布检验; 3.两个独立样本检验。 四、实验过程 问题一:

SPSS的参数检验和非参数检验

S P S S的参数检验和非 参数检验 公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

实验报告 SPSS的参数检验和非参数检验 学期:_2013__至2013_ 第_1_学期 课程名称:_数学建模专业:数学 实验项目__SPSS的参数检验和非参数检验实验成绩:_____ 一、实验目的及要求 熟练掌握t检验及其结果分析。熟练掌握单样本、两独立样本、多独立样本的非参数检验及各种方法的适用范围,能对结果给出准确分析。 二、实验内容 使用指定的数据按实验教材完成相关的操作。 1、给幼鼠喂以不同的饲料,用以下两种方法设计实验: 方式1:同一鼠喂不同的饲料所测得的体内钙留存量数据如下: 方式2:甲组有12只喂饲料1,乙组有9只喂饲料2,所测得的钙留存量数据如下:

请选用恰当方法对上述两种方式所获得的数据进行分析,研究不同饲料是否使幼鼠体内钙的留存量有显着不同。 2、为分析大众对牛奶品牌是否具有偏好,随机挑选超市收集其周一至 周六各天三种品牌牛奶的日销售额数据,如下表所示: 请选用恰当的非参数检验方法,以恰当形式组织上述数据进行分析,并说明分析结论。 实验报告附页 三、实验步骤 (一) 方式1: 1、打开SPSS软件,根据所给表格录入数据,建立数据文件; 2、选择菜单Analyze-Compare means-Paired-Samples T Test,出现窗口; 3、把检验变量饲料1,饲料2 选择到Paired Variables框,单击OK。方式2: 1、打开SPSS软件,根据所给表格录入数据,建立数据文件; 2、选择菜单Analyze-Compare means-Independent-Samples T Test,出现窗口 3、选择检验变量饲料到Test Variable(s)框中。 4、选择总体标志变量组号到Grouping Variables框中。 5、单击Define Groups按钮定义两总体的标志值1、2,单击OK。

非参数检验卡方检验实验报告

大理大学实验报告 课程名称生物医学统计分析 实验名称非参数检验(卡方检验) 专业班级 姓名 学号 实验日期 实验地点 2015—2016学年度第 2 学期

Fisher 的精确检验:精确概率法计算的卡方值(用于理论数E<5)。 不同的资料应选用不同的卡方计算方法。 例为2*2列联表,df=1,须用连续性校正公式,故采用“连续校正”行的统计结果。 X2=,P(Sig)=<,表明灭螨剂A组的杀螨率极显着高于灭螨剂B组。 例 表3 治疗方法* 治疗效果交叉制表 计数 治疗效果 123 合计 治疗方法11916540 21612836 31513735合计504120111 分析:表3是治疗方法* 治疗效果资料分析的列联表。 表4 卡方检验 X2值df渐进 Sig. (双侧) Pearson 卡方 1.428a4.839

似然比4.830线性和线性组合.5141.474 有效案例中的 N111 a. 0 单元格(.0%) 的期望计数少于 5。最小期望计数为。 分析:表4是卡方检验的结果。自由度df=4,表格下方的注解表明理论次数小于5的格子数为0,最小的理论次数为。各理论次数均大于5,无须进行连续性校正,因此可以采用第一行(Pearson 卡方)的检验结果,即 X2=,P=>,差异不显着,可以认为不同的治疗方法与治疗效果无关,即三种治疗方法对治疗效果的影响差异不显着。 例 表5 灌溉方式* 稻叶情况交叉制表 计数 稻叶情况 123 合计 灌溉方式114677160 2183913205 31521416182合计4813036547 分析:表5是灌溉方式* 稻叶情况资料分析的列联表。

非参数检验(卡方检验)实验报告

评分 大理大学实验报告 课程名称生「物医学统计分析 实验名称非参数检验(卡方检验) 专业班级 实验日期实验地点 2015—2016学年度第一2 学期 、实验目的 对分类资料进行卡方检验。 、实验环境 1、硬件配置:处理器:In tel(R)Core(TM) i5-4210U CPU @1.7GHz 1.7GHz 安装内存(RAM): 4.00GB 系统类型:64位操作系统 2、软件环境:IBM SPSS Statistics 19.0 软件 三、实验内容

(包括本实验要完成的实验问题及需要的相关知识简单概述 ) (1) 课本第六章的例6.1-6.5运行一遍,注意理解结果; (2) 然后将实验指导书的例 1-4运行一遍,注意理解结果。 四、 实验结果与分析 (包括实验原理、数据的准备、运行过程分析、源程序(代码) 例6.1 分析:表1是灭螨A 和灭螨B 杀灭大蜂螨效果的样本分类的频数分析表,即交叉列联表。 表2卡方检验 b.仅对2x2表计算 分析:表2是卡方检验的结果。因为两组各自的结果互不影响,即相互独立。对于这种频数表 格式资料,在卡方检验之前必须用“加权个案”命令将频数变量定义为加权变量,才能 进行卡方检验。 Pearson 卡方:皮尔逊卡方检验计算的卡方值(用于样本数 n > 40且所有理论数E > 5); 连续校正b :连续性校正卡方值(df=1 ,只用于2*2列联表); 似然比:对数似然比法计算的卡方值(类似皮尔逊卡方检验); Fisher 的精确检验:精确概率法计算的卡方值(用于理论数 E<5)。 不同的资料应选用不同的卡方计算方法。 例6.1为2*2列联表,df=1,须用连续性校正公式,故采用“连续校正”行的统计结果。 X 2=7.944 , P (Sig ) =0.005<0.01,表明灭螨剂 A 组的杀螨率极显著高于灭螨剂 B 组。 例6.2 表3治疗方法*治疗效果交叉制表 计数 治疗效果 、图形图象界面等) 合计

gcc-gdb-make操作简介

gcc-gdb-make操作简介 1. 编译工具gcc使用方法和常用选项说明 (2) 简介 (2) 实例1 (2) 实例2 (5) 2. 调试工具gdb使用方法和常用命令说明 (7) 简介 (7) 实例 (8) 3. 维护工具make使用方法说明 (10) 简介 (10) 实例 (10) 说明: 本文档结合实例说明了gcc、gdb、make工具基本用法。

1. 编译工具gcc使用方法和常用选项说明 简介 gcc,全称GNU Compiler Collection,是目前Linux平台上最常用的C语言编译系统,符合ANSI C标准。因为开源,随着不断完善,它能够编译用C、C++和Objective-C等语言编写的程序。 当调用gcc时,通常情况下会完成整个过程(预处理→编译→汇编→链接)。但是,可以通过使用gcc的命令选项,使其处理过程只进行到某个中间环节。 下表列出了gcc常用选项的格式及功能。 实例1 (以hello.c程序的编辑、编译为例) 第1步,为了便于观察实验结果,在用户主目录下创建子目录TEST,然后进入子目录。 第2步,使用vi/vim/gedit编写一个简单的c程序hello.c

第3步,使用gcc工具进行编译。 ①不带任何选项 gcc hello.c表示一次性完成对源程序的编译、连接过程,并生成可执行文件,默认为a.out。 ./a.out表示执行当前路径下的可执行文件a.out。 ②使用选项-o gcc hello.c–o hello表示对hello.c进行编译、连接,并指定输出的可执行文件名为hello。 ./hello表示执行当前路径下的可执行文件hello。 ③使用选项-c gcc hello.c –c表示对hello.c进行编译,但不进行连接。生成目标文件为hello.o。用ls可以查看。 继续对目标文件进行连接,并指定生成的可执行文件名为hello. gcc hello.o–o hello表示对目标文件hello.o进行连接,生成可执行文件hello。 ④使用选项-I 为了说明选项-I的用途,先做如下准备工作: a) 返回TEST目录的上级目录,然后使用vi/vim/gedit编辑器或gedit编写头文件t1.h

linux、GCC、GDB学习总结

1 虚拟机VMware6.5、RedHat安装及Linux基本命令 1.1 GCC、GDB的安装 虚拟将上安装RedHat后,在Linux环境下编辑和编译C\C++需要GCC、GDB编译,调试,Linux环境下输入gcc -v于gdb –v可以查看所装系统是否装有gcc与gdb。如果没有显示其所装版本,可以在Redhat 的RPMs包中找到相应版本的gcc与gdb的rmp安装文件。具体方法是vm->Removable Devices->CD\DVD->Connect. 把RedHat的镜像文件添加到use iso image file:下,点击OK,在VMware界面上出现以个光盘的标志双击后RedHat->RAMPS,选择要安装的GCC、与GDB文件。 注:不能直接用GCC变异C++文件,最好使用G++编译。

1.2 Linux基本命令 Linux常用命令全集:https://www.wendangku.net/doc/b5159492.html,/special/linuxcom/ 2 GCC、GDB的使用及基本指令 2.1 Linux环境下vi编辑器的基本使用方法 VMware界面上右键->open terminal 界面中输入vi 回车([jkl@localhost ~]$ vi) 在vi编辑器下输入要编辑的程序: #include int wib(int no1, int no2) { int result, diff; diff = no1 - no2; result = no1 / diff; return result; } int main(int argc, char *argv[]) { int value, div, result, i, total; value = 10; div = 6; total = 0; for(i = 0; i < 10; i++) { result = wib(value, div); total += result; div++; value--; } printf("%d wibed by %d equals %d\n", value, div, total); return 0; vi环境下输入模式与指令模式的切换键是Esc,当左下角出现--INSERT--时可以对程序进行编辑。按下Esc后,可以输入vi指令,会在窗口最下一行显示,

gcc调试总结

使用GCC编译与GDB调试 一:VMwareTools安装过程 1.sudo apt-get update 2.sudo apt-get dist-upgrade 3. 3.sudo apt-get install build-essential 4.sudo apt-get install linux-headers-3.0.0-29-generic-pae 5.Ubuntu与windows间的文件共享 (选择VM中设置,选项,共享文件夹,添加路径,如果不能在Ubuntu下的 /mnt/hgfs下找到共享文件夹还需安装 Sudo apt-get instatll open-vm-dkms Sudo mount -t vmhgfs .host:/ /mnt/hgfs 二:C 编程中相关文件后缀 .a 静态库(archive) .c C源代码(需要编译预处理) .h C源代码头文件 .i C源代码(不需编译预处理) .o 对象文件 .s 汇编语言代码 .so 动态库 三:Gcc的执行过程 gcc and g++分别是gnu的c & c++编译器gcc/g++在执行编译工作的时候,总共需要4步

1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] 四. 常用编译命令选项 假设源程序文件名为test.c。 1.无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。 -o选项用来指定输出文件的文件名。 3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件。 4. 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件test.i汇编成test.s文件。 5. 选项-c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件。 6. 无选项链接 用法:#gcc test.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 7. 选项-O 用法:#gcc -O1 test.c -o test 作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。 五. 多源文件的编译方法

相关文档
相关文档 最新文档