




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式学院实验手册linux基础及C高级实验嵌入式学院教材开发部编著(内部资料,请勿外传)嵌入式学院(2014)版权所有V3.0
Linux基础实验实验一Linux常用命令的使用【实验内容】 本课程要求学员对Linux基本操作命令有一定了解和掌握。下面列出的一些常用命令作为参考。最好针对每一个都能亲自练习、掌握。【实验平台】 PC机【实验步骤】1.ls命令----------------------------------------------------------------------ls 以默认方式显示当前目录文件列表
ls–a 显示所有文件包括隐藏文件
ls–l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行
----------------------------------------------------------------------2.cd命令
cddir 切换到当前目录下的dir目录
cd.. 切换到到上一级目录
cd~ 切换到用户目录,比如是root用户,则切换到/root下
----------------------------------------------------------------------3.rm命令
rmfile 删除某一个文件
rm-rfdir 删除当前目录下叫dir的整个目录
----------------------------------------------------------------------4.mv命令
mvsourcetarget 将文件或者目录source更名为target
----------------------------------------------------------------------5.echo命令
echomessage 显示一串字符----------------------------------------------------------------------
6.cat命令catfile 显示文件的内容,和DOS的type相同
catfile|more 显示文件的内容并传输到more程序实现分页显示,使用命----------------------------------------------------------------------7.du命令
du 计算当前目录的容量
du-sm/root 计算/root目录的容量并以M为单位----------------------------------------------------------------------8.find命令
find-name<path>file 在/path目录下查找看是否有文件file----------------------------------------------------------------------9.grep命令
grep-r“chars”./ 在当前目录的所有文件查找字串chars-r表示递归查找子目录Ctrl+c推出递归----------------------------------------------------------------------10.vi的使用
vifile 编辑文件file
vi原基本使用及命令:
vi分为编辑状态和命令状态。输入命令要先按ESC,退出编辑状态,然后输入命令。常用命令有::x(退出):x!(退出不保存):w(保存文件):w!(不询问方式写入文件):rfile(读文件file):%s/oldchars/newchars/g(将所有字串oldchars换成newchars)i进入编辑插入状态ESC退出编辑状态----------------------------------------------------------------------11.man命令manls 读取关于ls命令的帮助
----------------------------------------------------------------------12.tar命令
tar-xfzvfile.tgz 将文件file.tgz解压
tar-zcvffile.tgz<source> 将文件或目录<source>压缩为file.tgz
gzipdirectory.tar 将覆盖原文件生成压缩的directory.tar.gz
gunzipdirectory.tar.gz 覆盖原文件解压生成不压缩的directory.tar。
----------------------------------------------------------------------13.文件目录管理命令
suroot 切换到超级用户
chmoda+xfile 将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bashfile才能执行
chmod666file 将文件file设置为可读写
chownuser/dir 将/dir目录设置为user所有
----------------------------------------------------------------------实验二:TFTP服务器配置【实验目的】通过实验,学员掌握TFTP服务配置和使用方法【实验原理】TFTP(TrivialFileTransferProtocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时重传方式来保证数据的到达。【实验内容】本实验通过安装和配置TFTP服务实现简单的文件传输。【实验平台】 带有Linux操作系统的PC机,并在以太网中连接。【实验步骤】配置服务器端使用以下的命令,安装TFTP服务。linux@farsight:~$sudoapt-getinstalltftp-hpatftpd-hpa正在读取软件包列表...完成正在分析软件包的依赖关系树正在读取状态信息...完成推荐安装的软件包:inet-superserver下列【新】软件包将被安装:tftp-hpatftpd-hpaxinetd共升级了0个软件包,新安装了3个软件包,要卸载0个软件包,有9个软件未被升级。需要下载198kB的软件包。解压缩后会消耗掉631kB的额外空间。获取:1intrepid/maintftp-hpa0.48-2.2ubuntu1[24.5kB]获取:2intrepid/maintftpd-hpa0.48-2.2ubuntu1[35.2kB]获取:3intrepid/mainxinetd1:2.3.14-7ubuntu1[139kB]下载198kB,耗时14s(13.8kB/s)正在预设定软件包...选中了曾被取消选择的软件包tftp-hpa。(正在读取数据库...系统当前总共安装有108543个文件和目录。)正在解压缩tftp-hpa(从.../tftp-hpa_0.48-2.2ubuntu1_i386.deb)...选中了曾被取消选择的软件包tftpd-hpa。正在解压缩tftpd-hpa(从.../tftpd-hpa_0.48-2.2ubuntu1_i386.deb)...选中了曾被取消选择的软件包xinetd。正在解压缩xinetd(从.../xinetd_1%3a2.3.14-7ubuntu1_i386.deb)...正在处理用于man-db的触发器...正在设置tftp-hpa(0.48-2.2ubuntu1)...正在设置tftpd-hpa(0.48-2.2ubuntu1)...修改配置文件在/etc/default下修改tftp服务的配置文件tftpd-hpa:linux@farsight:~$sudovim/etc/default/tftpd-hpa#/etc/default/tftpd-hpaTFTP_USERNAME="tftp"TFTP_DIRECTORY="/tftpboot"TFTP_ADDRESS=":69"TFTP_OPTIONS="-l-c-s"说明:修改项,其中TFTP_DIRECTORY处可以改为你的tftp-server的根目录,参数-c指定了可以创建文件。创建文件夹/tftpboot,修改权限为777手动启动/停止服务用户可以通过手动去启动/停止TFTP服务器,修改配置文件后必须重新启动服务。停止包括tftp在内的网络服务,查看状态显示为“notrunning”。linux@farsight:~$sudoservicetftpd-hpastoptftpd-hpastop/waitinglinux@farsight:~$sudoservicetftpd-hpastarttftpd-hpastart/running,process9948启动包括tftp在内的网路服务,查看状态显示为“running”。linux@farsight:~$sudoservicetftpd-hpastart*Startinginternetsuperserverxinetd [OK]linux@farsight:~$sudoservicetftpd-hpastatustftpd-hpastart/running,process9875重新启动包括tftp在内的网络服务。linux@farsight:~$sudoservicetftpd-hparestarttftpd-hpastart/running,process9953 tftp服务器测试登录服务器linux@farsight:~$tftplocalhost或linux@farsight:~$tftp<主机ip>从tftp服务器下载文件tftp>get<filename>上传文件到tftp服务器tftp>put<filename>查看帮助tftp>?或tftp>helptftp-hpa0.48Commandsmaybeabbreviated.Commandsare:connect connecttoremotetftpmode setfiletransfermodeput sendfileget receivefilequit exittftpverbose toggleverbosemodetrace togglepackettracingliteral toggleliteralmode,ignore':'infilenamestatus showcurrentstatusbinary setmodetooctetascii setmodetonetasciirexmt setper-packettransmissiontimeouttimeout settotalretransmissiontimeout? printhelpinformationhelp printhelpinformation退出登陆tftp>quit实验三NFS服务器配置【实验内容】NFS(NetworkFileSystem)主要实现了Linux系统之间的资源共享。它是将某台Linux主机的若干目录共享出来,交由其他Linux主机直接使用。本实验用于通过NFS服务实现Linux系统间的资源共享。【实验目的】通过实验,学员掌握NFS服务配置方法【实验平台】 带有Linux操作系统的PC机,并在以太网中连接。【实验步骤】配置服务器端使用以下的命令,安装NFS服务器程序软件包。并创建/etc/exports和/etc/default/nfs-kernel-server配置文件,等待用户在完成NFS安装之后,配置将要共享的资源。linux@farsight:~$sudoapt-getinstallnfs-kernel-server[sudo]passwordforlinux:正在读取软件包列表...完成正在分析软件包的依赖关系树正在读取状态信息...完成下列【新】软件包将被安装:nfs-kernel-server共升级了0个软件包,新安装了1个软件包,要卸载0个软件包,有8个软件未被升级。需要下载152kB的软件包。解压缩后会消耗掉385kB的额外空间。获取:1intrepid-updates/mainnfs-kernel-server1:1.1.2-4ubuntu1.1[152kB]下载152kB,耗时3s(43.1kB/s)选中了曾被取消选择的软件包nfs-kernel-server。(正在读取数据库...系统当前总共安装有108565个文件和目录。)正在解压缩nfs-kernel-server(从.../nfs-kernel-server_1%3a1.1.2-4ubuntu1.1_i386.deb)...正在处理用于man-db的触发器...正在设置nfs-kernel-server(1:1.1.2-4ubuntu1.1)...Creatingconfigfile/etc/exportswithnewversionCreatingconfigfile/etc/default/nfs-kernel-serverwithnewversion*StartingNFScommonutilities [OK]*ExportingdirectoriesforNFSkerneldaemon... [OK]*StartingNFSkerneldaemon [OK]可以使用netstat命令检查NFS端口是否已经打开,NFS端口(2049)以及SUNRPC端口(111)已处于监听状态。配置NFS资源配置NFS服务器的关键也就是配置该文件。配置文件中一行即为一条配置项,用于指明网络中的“哪些客户端”共享“哪些目录资源”。导出资源配置项格式如下所示。<ShareDirectory><Host1(args)><Host2(args)>……其中,<ShareDirectory>表示服务器中导出的共享资源路径,必须使用绝对路径名;<Hostn>表示客户端主机标识,可以使用表24.1列出的方式指定主机名,如果是多个主机标识,需要使用空格隔开;<args>表示赋予每个客户端主机的访问权限。以下为一个配置样本。linux@farsight:~$cat/etc/exports#/etc/exports:theaccesscontrollistforfilesystemswhichmaybeexported#toNFSclients.Seeexports(5).#ExampleforNFSv2andNFSv3:#/srv/homeshostname1(rw,sync)hostname2(ro,sync)#/source/rootfs*(rw,sync,no_root_squash)手动启停NFS服务通常,NFS服务的守护进程是以持续监听端口的独占方式运行。用户通过使用NFS的初始化脚本,可以手动启停NFS服务。系统管理员在调整共享资源之后,一定要重新启动NFS服务,以便使修改的配置生效。 (1)启动NFS服务linux@farsight:~$sudo/etc/init.d/nfs-kernel-serverstart*ExportingdirectoriesforNFSkerneldaemon... [OK]*StartingNFSkerneldaemon [OK] (2)停止NFS服务linux@farsight:~$sudo/etc/init.d/nfs-kernel-serverstop[sudo]passwordforlinux:*StoppingNFSkerneldaemon [OK]*UnexportingdirectoriesforNFSkerneldaemon... [OK] (3)重新启动NFS服务linux@farsight:~$sudo/etc/init.d/nfs-kernel-serverrestart*StoppingNFSkerneldaemon [OK]*UnexportingdirectoriesforNFSkerneldaemon... [OK]*ExportingdirectoriesforNFSkerneldaemon... [OK]*StartingNFSkerneldaemon [OK] (4)查看NFS服务当前状态 NFS服务开启时显示nfsdrunning,关闭是显示nfsnotrunning。linux@farsight:~$sudo/etc/init.d/nfs-kernel-serverstatusnfsdrunninglinux@farsight:~$sudo/etc/init.d/nfs-kernel-serverstatusnfsdnotrunning查看NFS服务器的共享资源在客户端可以使用showmount命令查看某台NFS服务器上的都有哪些NFS共享资源。showmount命令包含在nfs-kernel-server软件包中。如果希望使用该命令,需要安装nfs-kernel-server软件包。它的一般语法格式为:showmount[-dehv]NFSsrvname其中,NFSsrvname表示NFS服务器主机名,也可以使用IP地址。表24.3对常见选项作了简单描述。单独使用showmount命令,将显示本地主机/etc/export配置文件中的共享配置项。下面命令用于显示NFS服务器UbuntuFisher中的共享文件目录,命令执行结果不仅列出NFS服务器上共享资源的目录,还同时列出了授权访问NFS的客户端,这也NFS服务器上/etc/exports文件内容是相对应的。linux@farsight:~$showmount-eipExportlistforfarsight:/source/rootfs*挂载共享资源当了解了NFS服务器上共享资源之后,便可使用mount命令在客户端挂载NFS共享资源。假设NFS服务器UbuntuFisher开放/home/wdl/Share/nfs_1作为共享资源,客户端主机DebianFisher希望将该共享资源挂载到本地的/mnt/nfs_1目录中,可以使用以下命令完成挂载。mount-tnfsUbuntuFisher:/home/wdl/Share/nfs_1/mnt/nfs_1当客户端使用mount命令将NFS服务器上的导出文件系统挂载到本地后,接下来对挂载的文件系统的操作,与使用本地文件系统没有任何区别。下面是挂载NFS服务器授权的目录。linux@farsight:~$sudomount-tnfs33:/source/rootfs//mnt/nfs/卸载共享资源要卸载共享目录,可以使用umount命令,它一般语法格式为:linux@farsight:~$umount/mnt-Point其中,mnt-Point表示共享资源在客户端主机上的挂载点。假设延续上面的例子,不再需要访问UbuntuFisher主机上的共享目录/home/wdl/Share/nfs_1后,下面的命令将释放共享资源,卸载当前文件系统的挂载点。linux@farsight:~$sudoumount/mnt/nfs需要说明的是,当有用户正在使用某个已加载的共享目录上的文件,则不能卸载该文件系统。如果用户确认无误,可以使用“umount–f”命令强行卸载共享的目录。C高级实验实验一GDB调试工具的使用【实验内容】将原来有错的程序经过gdb调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。【实验目的】通过调试一个有问题的程序,使读者进一步熟练使用vi操作,熟练使用gcc编译命令及gdb的调是命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。这是一个很小的程序,只有35行,希望读者认真调试。用Gdb调试有问题的程序【实验平台】 带有Linux操作系统的PC机。【实验步骤】1、使用vi编辑器,将以下代码输入到名为greet.c的文件中。此代码的原意为输出倒序输出main函数中定义的字符串,但结果显示没有输出。#include<stdio.h>#include<string.h>#include<stdlib.h>intdisplay1(char*string);intdisplay2(char*string);intmain(intargc,char**argv){ charstring[]="EmbeddedLinux"; display1(string); display2(string);}intdisplay1(char*string){ printf("Theoriginalstringis%s\n",string);}intdisplay2(char*string1){ char*string2; intsize,i; size=strlen(string1); string2=(char*)malloc(size+1); for(i=0;i<size;i++) string2[size-i]=string1[i]; string2[size+1]=''; printf("Thestringafterwardis%s\n",string2);free(string2);}2、使用gcc编译这段代码,gcc–ggreet.c–ogreet,注意要加上‘-g’选项以方便之后的调试。3、运行生成的可执行文件./greet,观察运行结果。4、使用gdb调试程序,通过设置断点、单步跟踪,一步步找出错误所在。5、纠正错误,更改源程序并得到正确的结果。TheoriginalstringisEmbeddedLinuxThestringafterwardis6、启动gdb调试:gdbgreet7、查看源代码,使用命令‘l’。8、在30行(for循环处)设置断点,使用命令‘b30’9、在33行(printf函数处)设置断点,使用命令‘b33’10、查看断点设置情况,使用命令‘infob’11、运行代码,使用命令‘r’12、单步运行代码,使用命令‘n’13、查看暂停点变量值,使用命令‘pstring2[size-i]’14、继续单步运行代码数次,并使用命令查看,发现string2[size-i]的值正确。15、继续程序的运行,使用命令‘c’16、程序在printf前停止运行,此时依次查看string2[0]、string2[1]…,发现string2[0]没有被正确赋值,而后面的复制都是正确的,这时,定位程序第31行,发现程序运行结果错误的原因在于‘size-i’。由于i只能增到‘size-i’,这样string2[0]就永远不能被赋值而保持NULL,故输不出任何结果。17、退出gdb,使用命令q18、重新编辑greet.c,把其中的“string2[size-i]=string1[i]”改为“string2[size–i-1]=string1[i];”即可19、使用gcc重新编译:gcc–ggreet.c–ogreet20、查看运行结果:./greet,得到结果正确TheoriginalstringisEmbeddedLinuxThestringafterwardisxuniLdeddedbmE实验二指针与内存分配【实验目的】掌握指针的定义和使用。【实验平台】 带有Linux操作系统的PC机。【实验步骤】编程实现输入一个字符串数字,如“1234”,将其转换成整形1234输出。编辑以下两段代码,通过编译运行得出结果,分析出现这种结果的原因,并修改源代码使程序能正常输出。#include<stdio.h>#include<stdlib.h>voidGetMemory(char*p,intnum)
{
p=(char*)malloc(sizeof(char)*num);
}
intmain(void){
char*str=NULL;
GetMemory(str,100);
strcpy(str,"hello");
printf(“%s\n”,str);return0;
}#include<stdio.h>char
*returnStr()
{
char
p[]="helloworld!";
return
p;
}
int
main()
{
char
*str=NULL;//一定要初始化,好习惯
str=returnStr();
printf("%s\n",
str);return
0;}利用指向结构体的指针和动态内存分配函数malloc编制一个程序,建立具有5节点的链表,每个节点表示一位学生的信息内部包含学生的学号、数学和英语成绩,要求计算其平均成绩并输出。(部分代码示意如下:)#include<stdio.h>#include<stdlib.h>typedefstructstudent{ intnmber; intMathScore; intEngScore;}STU;/*创建具有5个节点的链表*/voidcreat_list(STU**head,intn){ ...; ...malloc...; ...;}/* 计算平均成绩*/intaverage_score(STU*head){}intmain(intargc,char*argv[]){ STU*head; intmath,English; creat_list(&head,5); math=average_score(head); EngScore=average_score(head); ...; return0;}实验三存储类型实验【实验内容】加深理解存储类型。掌握各种存储类型的生命周期和作用域.【实验目的】通过阅读参考代码加深对存储类的理解,并理解程序原理,验证实验结果【实验平台】PC机、ubuntu操作系统,gcc等工具【实验步骤】代码分为两个程序parta.c和partb.c,程序中使用全部的5种存储类阅读参考代码,理解代码中各种存储类的使用方法参考代码如下:partA.c#include<stdio.h>voidreport_count();voidaccumulate(intk);intcount=0;//filescope,externallinkageintmain(void){intvalue;//automaticvariableregisterinti;//registervariableprintf("Enterapositiveinteger(0toquit):");while(scanf("%d",&value)==1&&value>0){++count;//usefilescopevariablefor(i=value;i>=0;i--)accumulate(i);printf("Enterapositiveinteger(0toquit):");}report_count();return0;}voidreport_count(){printf("Loopexecuted%dtimes\n",count);}partB.c#include<stdio.h>externintcount;//referencedeclaration,externallinkagestaticinttotal=0;//staticdefinition,internallinkagevoidaccumulate(intk);//prototypevoidaccumulate(intk)//khasblockscope,nolinkage{staticintsubtotal=0;//static,nolinkageif(k<=0){print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 秋冬饮品培训课件图片高清
- 自动化供应链管理平台创新创业项目商业计划书
- 智能网联汽车安全测试报告创新创业项目商业计划书
- 甘肃省夏河县2026届化学九上期中学业水平测试试题含解析
- 海上安全技能培训逃生课件
- 2025江西吉安市吉安县县城生活污水处理厂面向社会招聘21人考试模拟试题及答案解析
- 2025辽宁丹东东港市北井子镇实施大学生“归巢行动”选聘1人考试模拟试题及答案解析
- 2025年江西省中赣投勘察设计有限公司招聘工作人员32人备考考试题库附答案解析
- 2025云南昆明锦康司法鉴定中心招聘二次挂网15人备考模拟试题及答案解析
- 2025湖北东风汽车集团股份有限公司采购管理部招聘4人考试模拟试题及答案解析
- 2024抖音电商女性消费市场研究报告-蝉妈妈
- 2024年贵州水城能投发电有限公司招聘笔试冲刺题(带答案解析)
- 内分泌科制度
- 中国人民大学新闻学院《440新闻与传播专业基础》专业硕士历年考研真题
- 二年级奥数(从课本到奥数-第一学期B版)
- 山西省洪洞西区块勘查实施方案
- 信贷欺诈与反欺诈技术
- 小额贷款信贷风险管理制度样本
- 2023年全国普通高等学校体育单招真题政治试卷(原卷+解析)
- 吊篮施工验收标准及规范
- 区域分析与规划课件
评论
0/150
提交评论