linux部分习题(1.8)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1.

作业内容

A.yum makecache命令的功能是将服务器的软件包信息缓存到本地

B.yum search命令可以在所有软件包中搜索包含有指定关键字的软件包

C.yum clean all 命令可以清除缓存中老旧的头文件和软件包

D.yum upgrade命令可以更新所有的rpm软件包

解析

yum工具在每次安装指定软件包的时候都会检测源服务器上的软件包信息为了便捷不用每次都去搜索软件包信息因此使用 yum makecache将软件包信息缓存到本地使用 yum clean all 清理老旧的缓存信息。因此A和C是正确的

yum search 用于在搜索包含有指定关键字的软件包B也是正确的

D选项

yum -y update升级所有包同时也升级软件和系统内核

yum -y upgrade只升级所有包不升级软件和系统内核软件和内核保持原样。 所以D选项不完整严谨

2.

将一个test.c文件仅仅进行汇编而不生成可执行程序的命令是 

A.gcc -S test.c

B.gcc -E test.c

C.gcc -c test.c

D.gcc test.c

 解析

 gcc常见选项

  -c 汇编完成后停止不进行链接

  -E 预处理完成后停止不进行编译

  -S 编译完成后停止不进行汇编

  -o 用于指定目标文件名称

  -g 生成debug程序。向程序中添加调试符号信息

题目要求为仅执行到汇编就结束而不生成可执行程序因此选择C选项

3.

 在编译过程中产生parse tree的过程是哪个阶段

A.语法分析

B.语义分析阶段

C.词法分析

D.目标代码生成阶段

 

解析

  • 编译过程为 扫描程序-->语法分析-->语义分析-->源代码优化-->代码生成器-->目标代码优化
  • 扫描程序进行词法分析从左向右从上往下扫描源程序字符识别出各个单词确定单词类型
  • 语法分析是根据语法规则将输入的语句构建出分析树或者语法树也就是我们答案中提到的分析树parse tree或者语法树syntax tree
  • 语义分析是根据上下文分析函数返回值类型是否对应这种语义检测可以理解语法分析就是描述一个句子主宾谓是否符合规则而语义用于检测句子的意思是否是正确的
  • 目标代码生成指的是把中间代码变换成为特定机器上的低级语言代码。
  • 根据以上各个阶段的理解可以分析出正确选项为A选项。

4.

下列关于makefile描述正确的有

A.makefile文件保存了编译器和连接器的参数选项

B.主要包含了五个东西显式规则、隐晦规则、变量定义、文件指示和注释

C.默认的情况下make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件 找到了解释这个文件

D.在Makefile不可以使用include关键字把别的Makefile包含进来

 

解析

  1. makefile文件中保存了编译器和链接器的参数选项并且描述了所有源文件之间的关系。make程序会读取makefile文件中的数据然后根据规则调用编译器汇编器链接器产生最后的输出。根据makefile的功能理解A选项是正确的
  2. Makefile里主要包含了五个东西显式规则、隐晦规则、变量定义、文件指示和注释 B选项是正确的
  • 显式规则说明了如何生成一个或多个目标文件
  • make有自动推导的功能所以隐晦的规则可以让我们比较粗糙地简略地书写makefile比如源文件与目标文件之间的时间关系判断之类
  • 在makefile中可以定义变量当makefile被执行时其中的变量都会被扩展到相应的引用位置上通常使用 $(var) 表示引用变量
  • 文件指示。包含在一个makefile中引用另一个makefile类似C语言中的include 根据这一项可以推导D选项是错误的。
  • 注释makefile中可以使用 # 在行首表示行注释
  1. 默认的情况下make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件C选项也正确
  2. 根据以上对makefile的理解可以分析出正确的选项包含A B C

5.

 下列关于make/Makefile描述正确的有

A.make会生成Makefile中定义的所有目标对象

B.make会自动根据依赖对象检测目标对象是否需要重新生成

C.Makefile中伪对象的功能是目标对象存在则不需要生成

D.Makefile中声明伪对象使用 .PHONY

解析

 

  • make的执行规则是只生成所有目标对象中的第一个当然make会根据语法规则递归生成第一个目标对象的所有依赖对象后再回头生成第一个目标对象生成后退出。因此A选项错误。
  • make在执行makefile规则中根据语法规则会分析目标对象与依赖对象的时间信息判断是否在上一次生成后源文件发生了修改若发生了修改才需要重新生成。因此B选项正确
  • makefile中的伪对象表示对象名称并不代表真正的文件名与实际存在的同名文件没有相互关系因此伪对象不管同名目标文件是否存在都会执行对应的生成指令伪对象的作用有两个1. 使目标对象无论如何都要重新生成。2. 并不生成目标文件而是为了执行一些指令。 根据对伪对象的理解C选项错误
  • makefile中使用 .PHONY 来声明伪对象 .PHONY: clean。 D选项正确
  • 根据makefile的理解可以分析出 B D选项正确

6

程序的完整编译过程分为是预处理编译汇编等如下关于编译阶段的编译优化的说法中不正确的是

A.死代码删除指的是编译过程直接抛弃掉被注释的代码

B.函数内联可以避免函数调用中压栈和退栈的开销

C.for循环的循环控制变量通常很适合调度到寄存器访问

D.强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令

 

解析

  • 死代码删除是编译最优化技术指的是移除根本执行不到的代码或者对程序运行结果没有影响的代码而并不是删除被注释的代码因此A选项错误
  • 内联函数也叫编译时期展开函数 指的是建议编译器将内联函数体插入并取代每一处调用函数的地方从而节省函数调用带来的成本使用方式类似于宏但是与宏不同的是内联函数拥有参数类型的校验以及调试信息而宏只是文本替换而已。因此B选项正确
  • for循环的循环控制变量通常被cpu访问频繁因此如果调度到寄存器中进行访问则不用每次从内存中取出数据可以提高访问效率因此C选项正确
  • 强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令比如 num % 128 与 num & 127 相较则明显&127更加轻量 故D也是正确的

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux