版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程名称: 姓 名:系: 专 业: 年 级: 学 号: 指导教师: 职 称:福建魅林大学含0学隧(程序设计类课程)实验报告嵌入式Linux应用开发李建平信息与机电工程系 电子信息工程 2009 092230017 马森林讲师2012 年 12 月 9 H实验项冃列表序号实验项目名称成绩指导教师1实验一、嵌入式linux C语言开发工具2实验二、嵌入式Linux文件IO编程3实骑二、嵌入式Linux多任务编程4实验四、NTP协议的客户端实现56789101112福建农林大学金山学院实验报告系:信息与机电工程专业:电子信息工程年级:2009姓名: 李建平 学号:092230017 实验室号HI家烟
2、406_ 计算机号实验时间: 2012/11/7 指导教师签字: 成绩: 实验一嵌入式linux C语言开发工具一、实验目的和要求1. 通过指定指令的wm操作练习,使读者能够熟练使用Bm中的 常见操作,并且熟悉“m的几种模式,如果读者能够熟练掌握 实验内容中所要求的内容,则表明对vim的操作已经很熟练了。2. 通过调试一个有问题的程序,使读者进一步熟练使用Vi操作, 而且熟练掌握gcc编译命令及gdb的调试命令,通过对有问题 程序的跟踪调试,进一步提高发现问题和解决问题的能力。这 是一个很小的程序,希望读者认真调试。3. 通过对包含多文件的makefile的编写,熟悉各种形式的 makefil
3、e,并且进一步加深对makefile中用户自定义变量、自动 变量及预定义变量的理解。4. 通过使用autotools生成包含多文件的makefile,进一步掌握 autotools的使用方法。同时,掌握Linux下安装软件的常用方 法。二、实验步骤和原理1. vim使用练习(1) 在“/Toot目录下建一个名为“vinT的目录。(2) 进入“vinT目录。(3) 将文件/etc/inittab”复制到“vim目录下。(4) 使用vim打开“vim目录下的inittabo(5) 设定行号,指出设定 initdefault (类似于 id:5:initdefaulf,) 的所在行号。(6) 将光标
4、移到该行。(7) 复制该行内容。(8) 将光标移到最后一行行首。(9) 粘贴复制行的内容。(10) 撤销第9步的动作。(11) 将光标移动到最后一行的行尾。(12) 粘贴复制行的内容。(13) 光标移到 “si:sysinit:/etc/TC.d/TC.sysiiiit。(14) 删除该行。(15) 存盘但不退出。(16) 将光标移到首行。(17) 插入模式下输入 uHello,this is vi world!。(18) 返回命令行模式。(19) 向下查找字符串“0:waiL。(20) 再向上查找字符串“haf。(21) 强制退出vim,不存盘。分别指出每个命令处于何种模式下?2. 用gdb
5、调试程序的bug(1)使用编辑器,将以下代码输入到名为greet.c的文件中。(2)使用gcc编译这段代码,注意要加上“了选项以方便之后 的调试。(3)运行生成的可执行文件,观察运行结果。(4)使用gdb调试程序,通过设置断点、单步跟踪,一步步找出 错误所在。(5)纠正错误,更改源程序并得到正确的结果。3. 编写包含多文件的makefile(1)用5在同一目录下编辑两个简单的hello程序(2)仍在同一目录下用vim编辑makefile,且不使用变量替换, 用一个目标体实现(即直接将hello.c和hello.h编译成hello目标 体)。然后用make验证所编写的makefile是否正确。(
6、3)将上述makefile使用变量替换实现。同样用make验证所编 写的makefile是否正确。(4)编辑另一个makefile,取名为makefile 1,不使用变量替换, 但用两个目标体实现(也就是首先将hello.c和hello.h编译为 hello.o,再将hello.o编译为hello),再用make的选项验证这 个makefile 1的正确性。(5)将上述makefile 1使用变量替换实现。4. 使用autotools生成包含多文件的makefile(1)在原目录下新建文件夹autoo(2)将上例的两个代码文件“hello和“hello.h复制到该目录 下。(3 ) 使用 au
7、toscan 生成 configure.scano(4 )编辑configure.scan,修改相关内容,并将其重命名为 configure.in o(5) 使用 aclocal 生成 aclocal.m4o(6) 使用 autoconf 生成 configureo(7) 使用 autoheader 生成 config.h.ino(8) 编辑 makefile.amo(9) 使用 automake 生成 makefile.ino(10) 使用 configure 生成 makefileo(11) 使用make生成hello可执行文件,并在当前目录下运行hello 查看结果。(12) 使用mak
8、e install将hello安装到系统目录下,并运行,查 看结果。(13) 使用make dist生成hello压缩包。(14) 解压hello压缩包。(15) 进入解压目录。(16) 在该目录下安装hello软件。三、实验环境1) 一套PXA270EP嵌入式实验箱。2) 安装Redhat9的宿主PC机,并且配置好ARM Linux的开发环境。四、算法描述Linux编程工具编译工具:在Linux下支持大量的语言,有C、 C+、Java Pascals Fortran、COBOL 等等。在实验以 C 语言为主。 在使用这些编译工具时,是使用命令行方式的,也就是说,先用编辑 工具输入源程序,然后
9、再执行一长串的命令(参数比较复杂)进行编 译。例如:gcc - o hello hello, c 就是将 hello, c 编译为 hello, 然后你还需要为其赋予可执行的权限,这样才完成了整个工作。五、调试过程出错信息:yi e匕iu gi匕匕1jrootlocalhoGt ccdett gcc greet.c -o rreingreet.c:在函数 佃i门中:greet.c:8:警告:传递flisplayr的第1个参数时将指打啦给整数,未作类型转换greet.c:9:警告:传递已ispld的第1个参数时将指打啦给整数,未作类型转换greet.c:在文件层:greet.c:12:错误:ex
10、pected y before 铲 tokengreet.c:17:错误:与Qisplay2,类型冲突greet.:3:错误;displayZ,的上一个声明在此greet.c:在函数 display2,中:greet .c:21:错误:expectedSsrrf or l_attr i bute. before ize,greet.c:22:警告:隐式声明与内建函数felloe不兼容 greet.c:23:错误:W未芦明(在此函数内第一次使用)greet.c:23:错误:(即使在一个函数內多次出现,每个未声明的标识符在其greet.c:23:错误:所在的函数内也只报告一次。)调试成功:gree
11、t.c:在函數 display2中:greet.c:21:诸误:oxgeted 士,asrrf or L.attributG_, befcre Sizo*greet .c:22:警告:隠式声明匀内睦函數frol loc1不菲客greet.c:23:崔误:1未芦明(在比函数内弟一次便用)greet.c:23:错误:(却使在一个冈数內多次出现,每个未芹明的标识袴左其greet.c:23:皓误:所在的莎数内也只抿告一次。)rootiilocalhcst ccd巳# gcc greet.c -o rrBingreet.c:衽莎数 display2中:greet.c:21:話误:ejected:or l
12、_attribute_, before Size* greet .c:22:警告:隠式声明匀内睦函遍frol loc1不菲客rGGt.c:23:谱误:1未声明(在比西数内第一次便用)3reet.c:23:错視:(却使在一个冈频內多次出现.毎个未声耶的标识符左苴rGt.c:23:皓误:所在的莎数内也只抿告一次。)Ircotilccolhcst cdeW gcc greet.c -o rroingreet.c:在阪数 display*中:greet.c:21:警吿:隔式戸明与为建函数Strlen*不兼容greet.c:22;腎告:隐式芦砺号内遅莎發fralloc不系容root倉localhest
13、ccd巳# gcc greet.c -o rrBinrootlocolhcst ccdelti Is?reet.c great neinrootlocdlhcst ccdelti ./reinVre original string is Enteddded LinuxThe string oFterword isrcotGlocalhcst ccdajflrootClocalhost auto# vi nakefile rootOlocalhost auto再 autonakeconfigure.in:7: autonake requires AM.C0NFIGJ4EADER1t not AC
14、.CONFICHEADEautomake:configure.in: AM_INIT_AUTOMAKE* must be usedautomake:no proper inplenentation of AM_INITAUTOMAKE was found.automake:probably because aclocal.m4 is missingautomake:You should run aclocal to create this file, thenautomake:run autonake again.configure.in: required file ./install-sh
15、* not found configure.in: required file ./mkinstalldirs1 not found configure.in: required file *./missing* not found automake: no Makefile.am* found or specified frootlocalhost autol六、实验结果inittabAuthor:This file describes how the INIT process should set up the systen in a certain runeve1.Miquel van
16、Smoorenburg, miquelsCdrinke1nlnugneiorg Modified for RHS Linux by Marc Eviing and Donnie SarnesDefault run level The run levels used by RHS are:0 - halt (Do 卜or1 - Single user node2 Multiuser, without NFS (The sane as 3. if you do not have networking)3 - Full Bultiuser mode4 - unused5 - XUC - reboot
17、 (Do set ;defS| to this)seiton systen initialization si:sysinit:/tc/rcd/Tc sysinit10:0:wait:/etc/rc.d/rc 0(rootloc41bot rootjf cd / via(rootocalbost / Isbin etclibntpxa27O.linuxtftpbootusr zlugeboot boeelostfoundOProottftpboot-arfvardev lnltrd alscprocsb inV1B:/initdefaulr(root*localhost / cd vl (ro
18、otlocalhost vmjf 1b inittab(rootloc4ilho*t (root*localhostvia)# via iaittabvi |rootPlocalhost rootQlocalhost inittab rootl cd /vin vim# IsrootPlocalhost vim# vim inittab rootQlocalhost viml# Is groot. c gTPot .c* in-ittabroot91ocalliost vin gcc -g greet c: -o nain greet.c:24:19: enpty character cons
19、tant (rootOlocalhost vim# gcc -g greetc -o nain greot.c:24:19r onpty character constant rootOlocalhost vim* gcc -g greet c -o nain /rmp/ccqHPJmA.o(.text+ox2a): in runcxion main*: /vin/greetc:7: undefined reference to displayl1 collect2: Id returned 1 exit status rootOlocalhost vim片 gcc -g greet c -o
20、 nain rootclocalhost vimJls bash: ls: comnand not foundrootOlocalhost vim# Is greet c greet c inittab tiain rootelocalhost vim /mainThe original string is Embedded LinuxThe string afterward isrootOlocalhost vim#(rootOlocalhost vlnr Isgreet.c greet.c hello hello.c hello.h hello.o inittabaakefrootOloc
21、alhost vinjf rm -f hellorootOlocalhost vinl* nake gcc hello.o -o hello (rootOlocalhost vinjf | (BJS * hello.oCC = g,eeHelleshaBJS) t(CC) S(O&JS) -o hello.hello*.o;hello.c IhcllorhJCCC) - hello.c -o hllo.orootlocalhost vim* makegcc hello.o -o hellorootQlocalhost vim Isgreetc greet c- he 1lo hello.c h
22、ello.h hollo.o inittab tnain makcfilrootelocalhost vimA vi makefilerootOlocalhost vim# rn -f hellorootlocalhost vim Isgreetc greet c hello.c hello.h hello.o inittab main nakefile rootOlocalhost vim makegcc hello.o hellorootOlocalhost vimjA Isgreetc greet c hello hello.c hello.h hello.o inittab nain
23、makefil rootQlocalhost vim* |roo tQiengdl au to too l_tes ttf /conf igurecheck ing for a BSD-conpaIib!e ins la I 1. . /usi/b in/ins la 11 -c checking whe t he r hu i Id env ironnpnl i s sane yg checking for gawk gawkchecking whe ther mike sets $(KAKE). yes clicck ing for gcc gccchecking for C conpi
24、ler defau 11 outpul a.oui checking whe t he r the C conpiler works yes checking whether w are cross conp11 ing no check ing for su f f ix of cxccu tab les checking for suf f ix of object files o checking whether w are us ing the GNU C compile yes checking whe ther gcc accepts -g yes check ing for gc
25、c op t ion to accep t ANSI C none needed checking for style of include used by mike GNU checking dependency style of gcc gcc3 conf igure: crea t ing /conf ig sta tus enn f ig . s ta tus : crea t ing IVofilo con f igsta tus: crea t ing config.h conf igsta tus: conf ig h i s unchanged cciif ig .sliilu
26、s; rxrcu I ing depf i 1c s coimunds七、总结通过指定指令的vmi操作练习,我可以熟练使用vim中的常见操 作,并且熟悉vim的几种模式。接着调试一个有问题的程序,我进一 步熟练使用VI操作,而且熟练掌握gcc编译命令及gdb的调试命令, 通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能 力。附录:Greet.c文件源码:# iiiclude# mclude# mcludemt display 1 (char *strmg);mt display2(char *strmgl);mt mam()clw stnng=HEmbeddded Linux;di
27、splay l(strmg);display2(strmg);mt display 1 (char *strmg)printHThe original string is %s n;stnng);mt display2(char *strmgl)char *striiig2;int size);size=stilen(stimg 1);strmg2=(char *)malloc(sizeof(size+1);fbr(i=O ;isize ;i+)striiig2 size-i=string li;strmg2size+l-:printHThe string afterward is %sii,
28、strmg2);福建农林大学金山学院实验报告系:信息与机电工程专业:电子信息工程年级:2009姓名: 李建平 学号:092230017实验室号III家炳406 计算机号实验时间:2012,11,21指导教师签字: 成绩: 实验二 嵌入式Linux文件IO编程-、实验目的和要求1. 通过编写文件读写及上锁的程序,进一步熟悉Lmux中文件I/O 相关的应用开发,并且熟练掌握open() Tead()、write() fcntl() 等函数的使用。2. 通过编写多路复用串口读写,进一步理解多路复用函数的用 法,同时更加熟练掌握Linux设备文件的读写方法。二、实验内容和原理1文件的读写与上锁(1)在
29、Linux中FIFO是一种进程之间的管道通信机制。Linux支 持完整的FIFO通信机制。(2)本实验内容比较有趣,我们通过使用文件操作,仿真FIFO(先 进先出)结构以及生产者消费者运行模型。(3)本实验中需要打开两个虚拟终端,分别运行生产者程序(producer)和消费者程序(customer)。此时两个进程同时对同一个文件进行读写操作。因为这个文件是临界资源,所以可以使用文件锁 机制来保证两个进程对文件的访问都是原子操作。(4)先启动生产者进程,它负责创建仿真FIFO结构的文件(其实是一个普通文件)并投入生产,就是按照给定的时间间隔,向FIFO 文件写入自动生成的字符(在程序中用宏定义选
30、择使用数字还是使用 英文字符),生产周期以及要生产的资源数通过参数传递给进程(默 认生产周期为1秒,要生产的资源总数为10个字符,显然默认生产 总时间为10秒钟)。(5)后启动的消费者进程按照给定的数目进行消费,首先从文件中 读取相应数目的字符并在屏幕上显示,然后从文件中删除刚才消费过 的数据。为了仿真FIFO结构,此时需要使用两次拷贝来实现文件内 容的偏移。每次消费的资源数通过参数传递给进程,默认值为10个 字符。2. 多路复用式串口操作(1)本实验中,实现两台机器(宿主机和目标板)之间的串口 通信,而且每台机器均可以发送和接收数据。除了串口设备名称 不同(宿主机上使用串口 1: /dev/
31、ttySO,而在目标板上使用串口 5: /dev/ttvSl),两台机器上的程序基本相同。(2)首先程序打开串口设备文件并进行相关配置。调用select() 函数,使它等待从标准输入(终端)文件中的输入以及从串口设 备的输入。如果有标准输入上的数据,则写入到串口,使对方读 取。如果有串口设备上的输入,则将数据写入到普通文件中。三、实验环境1)一套PXA270EP嵌入式实验箱。2)安装Redhat9的宿主PC机,并且配置好ARM Linux的开发环境。四、算法描述及实验步骤1、文件的读写与上锁2、多路复用式串口操作图55宿主机/目标板程序的流程图五、调试过程rootlocaIhcet test2
32、t gcc custcnerc -o custerror/trrp/ccEqp/W.o: In function custom:custcmer. c: (. text+023e) : undefined reference to lock_set custcrrer.c: (.text+O2af): undef ire reference to lxk_set col Iect2: Id 返回 1r Lb III m *1 I I错误判断:lock_set函数未导入声明rcotQIccalhccc testzJB gctl oca I host test2tt gcc custcrrer .
33、c -o cus toner rootlocaIhcst test2tt ./custcmerA AZn j oy: abc defgh i jWi te lock set by 12959Release lock by 12959ri C%lI I i i i r- 1 I Ircotlocalhost test2tt gcc prccbcer c -o prcdicsr prcctK9r.c:7:21:铅误:lkset.c :没有那个文件或目录 rcotlocalhost test2tt gcc prccbcer c -o prcdicsr i recti刃 o: a I host tGt
34、2tt ./projucerWite lo:k set by 12356Rg Igg9 lock by 12S66Wite Io:匕 set by 12356Rg Igg9 lock by 12S66Wite Io:匕 set by 12356Re leass lock by 12S56Wit lock set by 12356Re leass lock by 12S56Wit lock set by 12356Re leass lock by 12S56Wit lock set by 12356Rg leass lock by 12S56W i tG lock set by 12366Rg
35、leass lock by 12S56W i tG lock set by 12366Re lease lock by 12S56W i te lock set by 12356Re lease lock by 12S56W i te lock set by 12356Re lease lock by 12S56rootlocalhost test2tt gcc ccmhostc -o hostrootlocalhost test2tt /hostInput665Input11221Input121Input12InputrrgfInput12112Inputsoresoresoresores
36、crrEsoresorewrds (enterwrds (enterwrds (enterwrds (enterrar ds(enterwrds (enterwrds (enterquit*quit*quit*quit*quit*quit*quit*to exit):to exit):to exit):to exit):to exi t):to exit):to exit):rootloca Ihcst test2tt ./wi teInputInputInputInputInputInputInputsorre vords (enter sorre vords (enter sone vor
37、ds(enter sone vords(enter sone vords(enter sorre wrds (enter sorre wrds (enterquittoquittoquittoquittoquittoquittoquittoexit ):11213 exit ):232 exit): hgf 12 exit): hfdfs exit) :ewe5 exi t ):cc ei t):|rootlocalhcet test2ft cat recv.dat6651122112112rrgf12112七、总结本次实验主要练习了文件的读写及上锁,多路复用式串口操作, 例子上的源程序存在许
38、多不足,需要对其进行修改。这就用到了上次 实验的内容,gdb调试工具,另外本实验对文件操作所调用的系统叩丄 的函数有open()read() write()、fcntl(),通过FIFO的管道通信机制, 将两个进程联系起来,实现半双工通信。附录:1、com_host.c/* com_host.c */#include #include #include #include #include #include #include #include #include Huart_api.hHmt maiii(void)int fdsSEL_FILE_NUM, wcv_fd, niaxfd;chai-
39、buffIBUFFER.SIZE;fd_set msetjmp_inset;stmct tiineval tv;unsigned loop = 1;int res? reaLiead, i;/*将从串I读取的数据写入到这个文件中*/if(recv_fd = op亡d(RECV_FILE_NAME. O_CREAT|O_WRONIX 0644) 0)penor(HopenH);return 1;fdsO = STDIN.FILENO; /* 标准输入 */if(fcisl = op亡ii_port(HOST_COM_PORT) 0) /* 打开串丨 I /penor(Hopen_ponH);re
40、turn 1;if (_config(fdsl, 115200, & N; 1) fdsl)?fdsO:fdsl;tv.tv sec = TDvIE DELAY;tv.tv_usec = 0;printf(MIiiput some words(enter quit to exit):nH);wlule (loop & (FD_ISSET(fHsO, &insE | FD_ISSET(fdsl、&inset) tmp_inset = inset;res = select(niaxf(d + 1, &tmp_iiiset5 NULL, NULL. &tv); switch(res)case -1:
41、 /* 错误 */perror(,select,t);loop = 0;break;case 0: /* 超时 */penor(Hselect time out”);loop = 0;break;default:for (1 = 0; i SEL_FILE_NUM; i+)if(FDJSSET(fdsi, &tmpinset)memset(buff 0, BUFFER_SIZE);/*读取标准输入或者串丨丨设备文件*/reaLread = read(fdsi, buff, BUFFER_SIZE);if (reaLread 0) & (eimo != E AG AIN)loop = 0;els
42、e if (lieaLread)close(fdsi);FD_CLR(fdsi, &inset);elsebufflreaLread = *0*;if (i = 0)/*将从终端读取的数据写入到串I 1*7 write(fdsl, buff, stiien(buff); printf(nIiiput some words(enter rquif to exit):iiM);else if (i = 1)/*将从串1读取的数据写入到普通文件中*/ write(recv_fd, buff real_read);if (strncmp(buff, quit11,4) = 0) /*如果读取为quit
43、则退出*/ loop = 0; /* end ofifFD.ISSET */ /* for i */ /* end of switch */ /* end of while */ close(iecv_fd); return 0;2、lock_set.c/* lock_set.c */ mt lock_set(int fct mt type) stmct flock old Jock, lock; lock.l whence = SEEK SET; lock. l_s tart = 0;lock. Lien = 0; lock.Ltype = type;lock.Lpid = -1;/*判断文
44、件是否可以上锁*/fcntl(fd. F_GETLK, &lock);if(lock.l_type != F_UNLCK)/*判断文件不能上锁的原因*/if(lock.l_type = F_RDLCK)/* 该文件已有读取锁 */ priiitf(HRead lock alieady set by %dn, lockl_pid);elseif(lock.l_type=F_WRLCK)/* 该文件已有写入锁 */pimtf(Write lock alieady set bylock.l_pid);/* Ltype可能已被F_GETLK修改过*/lock.l_type = type;/*根据不同的
45、type值进行阻塞式上锁或解锁*/if(fcntl(fci, F_SETLKW, &lock) 0)piuitf(Lock failed:tvpe =lock.l_type);retuin 1;switch(lock. Ltvpe)case F_RDLCK:priiitf(HRead lock set by %dn”,getpidQ);break;case F.WRLCK:printfCWrite lock set by %dn getpidQ);break;case F_UNLCK:priiitf(HRelease lock by %dn”,getpidQ);return 1;break;d
46、efault:break;/* end of switch */return 0;福建农林大学金山学院实验报告系:信息与机电工程专业:电子信息工程年级:2009姓名: 李建平学号:092230017 实验室号旧家炳406计算机号实验时间: 2012/11/28 指导教师签字: 成绩: 实验三嵌入式Linux多任务编程一、实验目的和要求1.通过编写多进程程序,使读者熟练掌握fork(). exec()、wait() 和waitpid()函数的使用,进一步理解在Linux中多进程编 程的步骤。2. 通过编写一个完整的守护进程,使读者掌握守护进程编写 和调试的方法,并且进一步熟悉如何编写多进程程序。
47、3. 通过编写有名管道多路通信实验,读者可进一步掌握管道的 创建、读写等操作,同时,也复习使用select()函数实现管 道的通信。4. 通过编写共享内存实验,读者可以进一步了解使用共享内存 的具体步骤,同时也进一步加深对共享内存的理解。在本实 验中,采用信号量作为同步机制完善两个进程(“生产者” 和“消费者”)之间的通信。其功能类似于“消息队列”小 节中的实例。在实例中使用信号量同步机制。二、实验内容和原理1. 编写多进程程序该实验有3个进程,其中一个为父进程,其余两个是该父进 程创建的子进程,其中一个子进程运行“lsF指令,另一个 子进程在暂停5s之后异常退出,父进程先用阻塞方式等待 第一
48、个子进程的结束,然后用非阻塞方式等待另一个子进程 的退出,等待收集到第二个子进程结束的信息,父进程就返 回。2. 编写守护进程在该实验中,读者首先创建一个子进程1 (守护进程),然后 在该子进程中新建一个子进程2,该子进程2暂停10s,然 后自动退出,并由子进程1收集子线程退出的消息。在这里, 子进程1和子进程2的消息都在系统日志文件(例如“/var/log/messages,日志文件的全路径名因版本的不同可 能会有所不同)中输出。在向日志文件写入消息之后,守护 进程(子进程1)循环暂停,其间隔时间为10s。3. 有名管道通信实验读者还记得第5章多路复用小节中的例子吗?其实,在那个 实验中,我们都用到有名管道(使用mknod命令创建)和多 路复用(使用poll()函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年冀教新版选修化学下册月考试卷含答案
- 2025年沪教版九年级历史上册阶段测试试卷
- 2025年鲁科五四新版九年级历史下册阶段测试试卷
- 2025年苏科新版九年级地理上册阶段测试试卷
- 2025年沪科版选修4历史下册月考试卷含答案
- 2025年北师大版选择性必修1生物上册阶段测试试卷
- 2025年湘教版九年级历史上册月考试卷
- 2025年度门卫值班人员交通秩序管理聘用合同4篇
- 南京二手房2025年度电子合同签订流程规范4篇
- 技能再教育培训合同(2篇)
- 2024版个人私有房屋购买合同
- 2024爆炸物运输安全保障协议版B版
- 2025年度军人军事秘密保护保密协议与信息安全风险评估合同3篇
- 《食品与食品》课件
- 读书分享会《白夜行》
- 光伏工程施工组织设计
- DB4101-T 121-2024 类家庭社会工作服务规范
- 化学纤维的鉴别与测试方法考核试卷
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 自动驾驶汽车道路交通安全性探讨研究论文
- 术后谵妄及护理
评论
0/150
提交评论