嵌入式Linux工程师常见笔试题.docx

上传人:王** 文档编号:809798 上传时间:2024-01-16 格式:DOCX 页数:9 大小:33.56KB
下载 相关 举报
嵌入式Linux工程师常见笔试题.docx_第1页
第1页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第2页
第2页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第3页
第3页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第4页
第4页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第5页
第5页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第6页
第6页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第7页
第7页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第8页
第8页 / 共9页
嵌入式Linux工程师常见笔试题.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
资源描述

《嵌入式Linux工程师常见笔试题.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux工程师常见笔试题.docx(9页珍藏版)》请在优知文库上搜索。

1、北京航天泰容科技嵌入式Iinux笔试题目一、简答题:1 .请写出实现后面几个功能的LinUX命令:显示文件,拷叫删除LsIs-la:-I查看文件所有的信息,-a查看所有的文件,包括隐藏的文件。Cpmnta.copt2 .do”,while和while,do有什么区别?do,while至少执行一次循环体,while,do先判断循环条件再执行循环体。3 .LinUX系统下.ko文件是什么文件?.so文件是什么文件?.so文件是动态链接库文件,相当于Wirl下的.dll文件。.ko是内核模块文件,是内核加载的某个模块,一般是驱动程序。4 .如何使用Vi进行块拷贝、粘贴、删除的操作yy:复制鼠标当前所

2、在行dd:删除鼠标当前所在行nyy/dd:复制/删除鼠标所在行开始的n行P:粘贴复制内容到鼠标所在行G:移动到文件尾大写u:取消前一个动作(大写:q:退出:W:彳踞:wq:保存退出:q!:强行!出:w文件名:另存为如:Whello:setnu:显示行号:setnonu:取消行号5 .在LinUX系统中,用来存放系统所需要的配置文件和子目录的目录是。/etc:该目录下存放各种配置文件。对于PC上的IinUX系统,/etc目录下的目录,文件非常多。6 .如何使用gcc得到宏展开的中间代码Gcc-E*.i*.c- c:编译成把源文件目标代码,不做连接的动作。- s:把源文件编译成汇编代码,不做汇编和

3、连接的动作。- E:只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。7 .如何使用gdb调试多进程答:最常用的是attach方法,首先写程序时在子进程中调用SIeeP函数休眠30-60秒,将程序编译成可执行文件,后台运行可执行文件,ps-furoot查看进程号,gdb,attach进程号,再使用StOP暂停子进程,设置一些断点和一些WatCh,break设置断点,IiSt命令观察源代码,SteP单步运行,next运行下一步,COntinUe继续运行,Print打印变量信息。8 .用户进程间通信主要哪几种方式管道、信号、消息队列、共享内存、信号量、套接字。线程同步的方法主要有:

4、互斥锁(mutex)和信号量9 .解释命令Is-amore具体含义。A:输出所有文件,包括隐藏文件,m:横向输出文件名,并且中间以,号分开,r:列出子目录下的文件,。与-I相似,输出文件的详细信息,不输出组信息。10 .LINUX中的管道指什么,重定向又指什么管道是Iinux中很重要的一种通信方式,它是把一个程序的输出直接连接到另一个程序的输入。11 .请写出以下代码的输出内容#includemain()inta,b,c,d;a=10;b=a+;c=+a;d=10*a+;printf(b.c,d:%d,%d,%dn,b,c,d);return0;A:13b:10c:12d:120BCd:10,

5、12,12012 .编写一个函数intcharnum(charfn10),该函数以只读方式翻开文件fn,通过统计,返回文件中字符的个数,请使用WhiIe循环实现计数功能。请勿修改主函数main和其他函数中的任何内容,仅在函数CharnUm的花括号中填写假设干语句。文件kt7.2.cpp的内容如下:#include#include#includeintcharnum(charfn10);voidmain()intnum;num=charnum(abc.txtn);coutnum=NUMENDL;)Intcharnum(charfn10)fstreamfile;file.open(fnjos:in

6、);if(!file)cout,abc.txtcantopenendl;abort();charch;inti=0;while(!file.eof()file.get(ch);i+;)file.close();returni-1;)二、编程题13 .如果有一个简单的Test工程目录如下:#treeTestTest1)使用wildcardpatsubst函数编写一个C+工程的Makefile文件14 .编写一个helloworld程序,要求以创立进程的方式打印HelloWorld!#include#include#include#includeMain()PidJresult;Result=fo

7、rkO;If(result=-1)perror(fork);exitO;Elseif(result=0)printf(uhellowoldz,);if(result=0)printf(uhellowoldw);)15 .翻开一个文件,并读取从第100字节开始的50字节数据。ttincludettincldeinclude#defineMAX_LEN4096intmain(intargc,char*argv)(intfd,i;charbufMAX.LEN;for(i=0;iMAX_LEN;i+)bufi=O;)if(argc!=2)(printf(yzInvalidargument!n/z);e

8、xit(1);)if(fd=open(char*)argvl,0_RD0NLY)=-1)PerrOr(“0Penfailed);exit;)Iseek(fd,100,SEEK_SET);if(read(fd,buf,50)!=50)(perror(Readerror);exit(1);)Printf(%sn”,buf);return0;)16 .编写一对socket程序,要求类似于networkechoprocotoLClient每隔1秒把自己的IP地址轮流循环发送给一个Server.SerVer接到IP后,在屏幕上打印对方IP:然后把自己的IP发送回去。Cliem收到回复后,在屏幕上打印对方

9、IP。程序一直运行,直到用户退出。各自分类统计接收到的各IP的数据包的个数。注意:CIient可以向多个SerVer发送请求,SerVer也可以接收多个CIient请求。17 .请描述LinUX下程序开发到执行的工作流程结合自己的工程经历)。开发arm-linux程序至少需要三种系统:Windows系统。主要用来文件传送和一些简单的文本文件编辑。这个系统其实并非必需,只是因为目前PC机上最流行的系统仍然是WindOWS系统,我们的很多关于PC的文件和数据的操作习惯都是在WindOWS系统上养成的,已经对其形成了严重的依赖,所以WindOWS系统扮演着的“辅助开发系统”的角色。PC-Linux系

10、统。在此系统上安装arm-Linux交叉编译器后,就可以对代码文本文件进行编译,生成可在arm-Linux系统中运行可执行程序。此系统被称为“Linux宿主机,我们对LinUX程序的开发工作(包括代码编写、调试和编译生成可执行文件)根本上就是在此系统上进行的。Arm-Linux系统。Arm-LinUX程序运行的平台。此系统的硬件载体是一块小型的嵌入式arm板,我们在LinUX宿主机上开发好程序并编译生成arm-linux可执行程序后,将可执行程序文件传送到嵌入式arm板中,然后就可以在arm板上直接运行此程序了。18 .结合自己的学习或工作感受简述LinUX与Windows编程的区别,嵌入式L

11、inUX与Windows的嵌入式OS(如XPE.WinCE)的区别。1 .尝试论述中断产生,到中断处理结束的详细过程7设备控制器或其他系统产生一个中断,处理器结束当前指令的执行,处理器发送中断应答信号,处理器将PSW和PC压入堆栈,根据中断,处理器加载新的PC值,保存剩余的处理状态,处理中断,恢复处理状态信息,恢复PC和PSW2 .试阐述何时可能会导致进程切换,以及进程切换的详细过程S1、时钟中断,进程允许执行的时间片结束导致进程切换2、IO中断3、内存失效4、发生错误或异常,进程被转换到退出状态5、系统调用,比方翻开文件,通常导致进程为阻塞状态1.解释命令Is-a|more具体含义.Is-a

12、是将当前目录下的文件名输出到终端,而参加后面的ImOre是将输出结果分页显示将test.c文件编译输出为test.elf带上调试信息,可以用GDB调试用要经历四个相互关联的步骤:预处理(也称预编译,Preprocessing)、编译(CornPiIation)、汇编(ASSembIy)和连接(Linking)。预处理(PreProCeSSing):命令gcc首先调用CPP进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。编译(ComPilatiOn):接着调用CC进行编译,这个阶段根据输入文件生成以Q为后缀的目标文件。汇编(A

13、SSembly):汇编过程是针对汇编语言的步骤,调用as进行工作,般来讲,.s为后缀的汇编语言源代码文件和汇编.s为后缀的汇编语言文件经过预编译和汇编之后都生成以Q为后缀的目标文件。连接(Linking):当所有的目标文件都生成之后,gcc就调用Id来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到适宜的地方。6.说明Udinux和Iinux的区别UCIinUX不具有的功能:1).没有存储管理单元2).不能运行时增加进程栈3).不支持分页4).可执行程序不是elf,而是flat5).不能用f

14、ork,而是用VfOrk6).RAMDISK7解释下面一组GDB命令的含义.break94设置断定,让程序在执行到第94行之前停止run运行准备调试的程序infoline121查看第121行设置的断点的信息8 .什么是链接脚本,其作用是什么请编写一个简单的链接脚本链接脚本主要用于规定如何把输入文件内的section放入输出文件内,并控制输出文件内各局部在程序地址空间内的布局.实例:以下脚本将输出文件的textsection定位在OX100O0,datasection定位在OX8000000:SECTIONS.=010000;.text:*(.text).=08000000;.data:*(.data).bss:*(.bss)解释一下上述的例子:.=010000:把定位器符号置为0义10000(假设不指定,那么该符号的初始值为0).text:*(.text):将所有(*符号代表任意输入文件)输入文件的.textsection合并成一个.textsection,该section的地址由定位器符号的值指定,W010000.=08000000:把定位器符号置为08000000.data:*(.data):将所有输入文件的.datasection合并成一个.datasection,该section的地址被置为OX8000000.bss:*(.bss):将所有输入文件的.bsssec

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 嵌入式开发

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!