嵌入式 Linux 开发工具篇问题整理----苏嵌老梁
1、 嵌入式开发与传统开发的区别?(同类问题:单片机开发与嵌入式开发的区别)
嵌入式开发有操作系统,而传统开发没有。传统开发:软件-----硬件;嵌入式开发:软件———操作系统(内核)———硬件。传统开发软硬件耦合度高,软件移植性差;软件开发人员要求高。而嵌入式开发软硬件耦合度低,软件移植性高。
2、 移植操作系统的好处有哪些?
(1)提供多任务机制;(2)提供网络协议栈;(3)提供了开源的软件和工具
3、 嵌入式工程师的岗位划分有哪些?所具备的能力是什么?
嵌入式工程师岗位共分为软件工程师和硬件工程师,能力:能精通c语言,熟悉汇编,理解操作系统的实现,熟悉硬件工作原理,能够具备操作系统和底层软件的开发。
4、 人工智能和嵌入式之间有什么关系?人工智能和大数据、云计算的关系?
人工智能的发展需要嵌入式来支持,两者相辅相成,共同发展。
人工智能指机器具备人的思维,之后发展到机器学习阶段,在这阶段人工智能要有云计算处理,同时人工智能也有筛选数据,分析数据的能力,相当于和大数据接轨。
5、 CPU、GPU、DPU、TPU 分别是什么?
CPU:中央处理器 GPU: 图形处理器 DPU: 深度学校处理器 TPU:张量处理器
6、 嵌入式操作系统有哪些?vxwork 的特点?ucossii 的特点?
嵌入式操作系统:Linux,WinCE, Symbian,Android,vxworks,ucossII
vxwork:既是操作系统,又是一个可以运行的最小的基本程序;具有调试能力,具有软件DEBUG功能,具有丰富的函数库。
ucossll:是一个小的实时操作系统,移植性高,提供多任务机制。
7、 什么是实时性?哪些操作系统具有实时性?
实时性指在规定的时间内完成规定的动作。
操作系统:硬实时:Vxworks,软实时WinCE,RTLinux, 无时实EmbeddedLinux
8、 嵌入式的就业前景和以后的发展方向如何?
随着嵌入式系统的广泛应用,会导致对相关人才的需求变大,因而就业前景非常好。
发展方向:可以选择计算机应用开发,可以选择嵌入式产品及应用系统的设计与开发工程师,也可以从事嵌入式技术的应用项目设计开发、产品维护和技术服务等。
9、 Linux 操作系统有哪些特点?
(1)源码公开(2)安全性高(3)和UNIX兼容(4)具有广泛的硬件支持(5)开发工具好
10、Linux 和 unix 操作系统的区别?
Linux的源码是公开的,并且是免费使用;而unix的源码是不公开的,并且要收费。
11、虚拟机的作用是什么?主流的虚拟机有哪些?
一台电脑可以运行多个操作系统。主流虚拟机:VMware和vpc
12、分别阐述 POSIX、GNU、GPL 的理解?
POSIX:是一个兼容Linux和UNIX两种操作系统的标准
GNU:为了区分Linux和UNIX两个操作系统
GPL:以GPL协议发布到网上的素材可以下载,也可以更改,但更改部分的源代码要公开,共享
13、Linux 发行版有哪些?各自的特点是什么?
Redhat,Debian Redhat特点是使用人群大,资料多,Debian特点具有apt管理方式
14、Linux 和 windows 的区别?
linux是开源的,免费的,发布的软件大都开源,用户可以自由修改并上传,使用用户少:而windows是不开源的,大多数软件要收费,使用用户多。
15、Linux 文件类型有哪些?
普通文件 —
目标文件 d
设备文件 c和b
连接文件 l
管道文件 p
共享文件 s
堆栈文件 f
16、罗列 Linux 下文件操作的命令有哪些?(常见面试命令)
ls ;ls -l;touch ; rm ; rm -f; cat ; mkdir ; cp; mv; find ; cd ; gcc ; gedit ; tree
17、如何配置 vim 编辑器?Linux 下还有哪些比较常用的文本编辑器?
可在github上寻找配置方案,安装
vi编辑器;gedit编辑器
18、如何压缩、解压文件?命令是什么?
在终端下的目录里执行tar cvzf+文件,将文件压缩;执行tar xvzf+文件,将文件解压;
命令:压缩:tar cvzf
解压:tar xvzf
19、gcc 编译器的优点有哪些?还知道哪些 C 的编译器?
优点:比较通用,可以编译运行在各种体系结构上的代码
编译器:kDevelop; Anjuta; Code Blocks
20、什么是交叉编译器?交叉编译器的作用?为什么需要交叉编译?
在当前cpu平台上编译出能在能在其他平台上运行的代码。
不同的cpu有不同的汇编,交叉一个平台到另一个平台的编译
21、C 语言中源文件到可执行文件经历哪几个步骤?每个步骤具体做哪些工作?
预处理,编译,汇编,链接
预处理:头文件展开,宏替换,条件编译
编译:语法检查,词法分析
汇编:将源程序翻译成目标文件
链接:将目标文件生成可执行文件
22、#include <stdio.h> 和 #include “stdio.h”的区别?
搜索路径不同。 前者是在系统目录中找;后者是先在当前目录找,若是找不到再到系统目录找
23、分别阐述-I -w -Wall -O3 的作用?
-l 使用库 -w 关闭警告 -Wall 开启所有警告 -O3 三级优化
24、什么是库文件?库文件的特点?
用保存函数或者变量,只能使用函数或者变量,但是看不到具体实现。
特点:可以实现共享,减少编写代码时间,提高效率
25、Linux 下库文件的分类有哪些?库文件的存放路径是什么?
静态库和动态库
存放路径:/lib 系统库
/usr/lib 程序库
26、静态库和动态库的区别?
静态库:是在执行程序之前就已经加入到执行代码中,成为执行程序一部分来执行。后缀名 .a
动态库:是在执行程序启动时加载到执行代码中。 后缀名 .so
27、如何制作和使用静态库和动态库?
静态库的制作:将所需源文件生成.o文件,利用指令ar rcs lib库名.a .o文件进而生成.a静态库文件
使用:gcc file.c –l库名(-L. 当前文件找库)
动态库的制作:gcc –shared –fPIC –o 库名.so 源文件.c
使用:gcc file.c ./库名.so –o 可执行文件名
28、GDB 的特点有哪些?
特点:可以调试多种语言;
可以让被调试的程序在指定位置停住;
当程序停住时可以检查程序状态,变量值。
29、分别阐述 run break info break continue finish 命令的作用?
run 运行程序
break 设置断点
info break 查看断点信息
continue 继续运行程序
finish 退出函数
30、make 工程管理的作用?
make能够同时编译整个工程诸多的源文件,提高软件开发效率;
make能检查每个源文件的时间戳,只有上次编译后修改的源文件才会在接下来的编译过程中被编译
31、makefile 的语法是什么?(定义、执行顺序)
包括目标体,依赖体,命令
目标文件:依赖文件
tab键 命令
执行顺序:由上致下完成。
32、企业级工程目录是如何创建?分别描述三个不同 makefile 的作用?
工程目录包括各个子目录及scripts和总控makefile,头文件目录include,或者其他图文文件。各个子目录下还有子目录makefile和src子目录用于保存.c文件。Scripts目录则余留其下makefile即可
总控makefile:将各个子目录下的.o链接生成可执行文件
子目录makefile:将目录下.c文件编译成.o
scripts 目录下 Makefile: 相当于 c 语言中的头文件 , 定义了一些变量