1.gcc的编译流程分为如下4个步骤,它们是:预处理、编译、汇编、链接2.串口等终端的3种工作模式,它们分别为:规范模式、非规范模式、原始模式3.Linux系统中的线程分为:用户级线程、轻量级线程、内核线程1.以长格式列目录时,若文件test的权限描述为:drwxrw-r--,则文件test的类型及文件所有者的权限是A.目录文件、读写执行2.命令”cd..”的功能是(B.回到当前目录的父目录)。3.当打开vi编辑器编辑文件时,vi处于(A.命令模式)模式。4.按下(A.Ctrl-C)键能终止当前运行的命令5.哪个命令可以将普通用户转换成超级用户(D.su)6./etc文件系统的标准应用是用于_D.存放用于系统管理的配置文件__?7.下面哪条命令可把./dir1目录(包括它的所有子目录)内容复制到./dir2中?D.cp-r./dir1/*./dir28.在vi全屏幕文本编辑器中,在命令模式下键入哪条命令将实现文件的不保存强制退出效果。B.:q!9.Linux系统的联机帮助命令是(Dman)。10.在UNIX/LINUX系统中,将所有的设备都当做一个文件,放在_B/dev___目录下。1.Linux操作系统中,exit()和_exit()的作用是什么,两者最大的区别是什么?答:(1)Linux操作系统中,exit()和_exit()的作用是终止进程。(2)两者最大的不同是exit()函数在终止当前进程之前要检查该进程打开过哪些文件把文件缓冲区中的内容写回文件。(3)因此在终止进程时建议使用exit()函数。2.写出makefile文件,使用/usr/local/arm/2.95.3/bin/arm-linux-gcc将helloworld.c编译成可执行文件helloworld,并且当使用makeclean时删除helloworld。答:CC=/usr/local/arm/2.95.3/bin/arm-linux-gccLD=/usr/local/arm/2.95.3/bin/arm-linux-ldEXEC=helloworldOBJS=helloworld.oCFLAGS+=LDFLAGS+=all:$(EXEC)$(EXEC):$(OBJS)$(CC)$(LDFLAGS)-o$@$(OBJS)$(LDLIBS$(LDLIBS_$@))(10分)clean:-rm-f$(EXEC)*.elf*.gdb*.o(5分)1.Linux操作系统中,进程间的八种状态是什么?答:运行状态、可中断的阻塞状态、不可中断的阻塞状态、可终止的阻塞状态、暂停状态、僵尸状态、僵尸撤销状态。2.执行命令ls–l时,某行显示如下:-rw-r--r--1chrischris207jul2011:58mydata(1)用户chris对该文件具有什么权限?(2)执行命令useraddTom后,用户Tom对该文件具有什么权限?(3)如何使任何用户都可以读写执行该文件?(4)如何把该文件属主改为用户root?2.答:(1)用户chris对该文件具有读写的权限。(3分)(2)用户Tom对该文件具有只读的权限。(3分)(3)如果想使任何用户都可以读写执行该文件,那么使用如下命令:chmod777mydata.(4分)(4)如果把该文件属主改为用户root,那么执行如下命令:chownrootmydata。(4分)四、操作题根据提示,完成下面各题。在嵌入式Linux开发的过程中,需要根据需要制作根文件系统,根据要求完成下面工作。(1)管理NandFlash上数据的根文件系统主要有哪三个?(2)制作jffs2根文件系统的工具是什么?(3)已知nandflash的块大小为128k,页大小为2k,如何使用jffs2根文件系统制作工具制作相关镜像。要求:(1)每个擦除块中不添加clearmarker警告语句;(2)以实际镜像大小来烧写nandflash;(3)源码的位置/root/rootfs;(4)生成根文件系统的镜像名为rootfs.jffs2。答:(1)jffs2、yaffs、cramfs(3分)(2)mkfs.jffs2(3分)(3)mkfs.jffs2–r/root/rootfs–e0x200000–s0x800–n–p–orootfs.jffs22.下面是关于管道通信的例子,请根据注释补全代码。/*pipe.c*/#includeunistd.h#includesys/types.h#includeerrno.h#includestdio.h#includestdlib.h#defineMAX_DATA_LEN256#defineDELAY_TIME1intmain(){(1)pid;//定义进程类型的变量pid。intpipe_fd[2];charbuf[MAX_DATA_LEN];constchardata[]=PipeTestProgram;intreal_read,real_write;(2)((void*)buf,0,sizeof(buf));//将buf的内存区域清零if((3)(pipe_fd)0)/*创建管道*/{printf(pipecreateerror\n);exit(1);}if((pid=(3))==0)/*创建一子进程*/{/*子进程关闭写描述符,并通过使子进程暂停1秒等待父进程已关闭相应的读描述符*/(4);sleep(DELAY_TIME*3);/*子进程读取管道内容*/if((real_read=(5))0)//子进程读取管道的数据到buf最多读取MAX_DATA_LEN个字节{printf(%dbytesreadfromthepipeis'%s'\n,real_read,buf);}close(pipe_fd[0]);/*关闭子进程读描述符*/exit(0);}elseif(pid0){/*父进程关闭读描述符,并通过使父进程暂停1秒等待子进程已关闭相应的写描述符*/(6);sleep(DELAY_TIME);if((real_write=(7)))!=-1)//将data中的数据命令写入管道{printf(Parentwrote%dbytes:'%s'\n,real_write,data);}close(pipe_fd[1]);/*关闭父进程写描述符*/(8)(pid,NULL,0);/*收集子进程退出信息*/exit(0);}}2.答:(1)pid_t(2)memset(3)pipe(4)fork()(5)close(pipe_fd[1])(6)read(pipe_fd[0],buf,MAX_DATA_LEN))(7)write(pipe_fd[1],data,strlen(data)(8)waitpid1.(本题24分)在嵌入式linux应用程序开发的过程中,需要完成以下工作:(1)arm-linux-gcc交叉开发工作的安装,如将当前目录下的cross-2.95.3.tar的交叉编译工具压缩包,解压到/usr/local/arm,并将解压的过程详细显示,可以使用命令:(1)。(2)将/usr/local/arm/2.95.3/bin目录放入PATH路径。第一步:使用gedit工具修改etc目录下的配置文件profile,使用命令:(2)。第二步:在该文件末尾添加语句实现将/usr/local/arm/2.95.3/bin放入PATH中,其语句为:(3)。第三步:保存文件,并通过命令:(4),使修改立即起作用。(3)在jason用户默认的主目录下创建examples目录,将应用程序放在该目录。第一步:进入jason用户默认的主目录:(5)。第二步:在jason用户默认的目录下创建目录examples:(6)。第三步:进入examples目录的命令是:(7)并创建应用程序。1.答:(1)tar–xvfcross-2.95.3.tar–C/usr/local/arm(2)gedit/etc/profile(3)exportPATH=$PATH:/usr/lcoal/arm/2.95.3/bin(4)source/etc/profile(5)cd/home/jason(6)mkdirexamples(7)cdexamples