Linux教程第四版(孟庆昌)--思考题 6 答案

思考题六

1. gcc编译过程一般分为那几个阶段?各阶段的主要工作是什么?

答:
1)预处理阶段:读取C语言源文件,对其中以#开头的指令(伪指令)和特殊符号进行
2)编译阶段:对预处理之后的输出文件进行词法分析和语法分析,在确定各成分都符合语法规则后,将其“翻译”为功能等价的中间代码表示或汇编代码。
3)汇编过程:把汇编语言代码翻译成目标机器代码。
4)连接阶段:将一个文件中引用的符号(如变量或函数调用)与该符号在另一个文件中的定义连接起来,从而使有关的目标文件连成一个整体,最终成为可被操作系统执行的可执行文件。

2. 对C语言程序进行编译时,针对以下情况应使用的编译命令行是什么?
(1)只生成目标文件,不进行连接。(2)在预处理后的输出中保留源文件中的注释。(3)将输出写到file指定的文件中。(4)指示编译程序在目标代码中加入供调试程序gdb使用的附加信息。(5)连接时搜索由library命名的库。

答:(1 -c
   2 -C
   3 -o file
   4 -g
   5 -llibrary

3. 通常,程序中的错误按性质分为哪三种?

答:
1)编译错误,即语法错误。这是在编译阶段发生的错误,主要是程序代码中有不符合所用编程语言语法规则的错误。
2)运行错误。这种错误在编译时发现不了,只在运行时才显现出来。
3)逻辑错误。这种错误即使在运行时也不显示出来,程序能正常运行,但结果不对。

4. gdb主要帮助用户在调试程序时完成哪些工作?

答:(1)启动程序,按用户要求影响程序的运行行为。
2)使运行程序在指定条件处停止。
3)当程序停止时,检查它出现了什么问题。
4)动态改变程序的执行环境,这样就可以先纠正一个错误,然后再纠正其他错误。

5. 调试下面的程序:
/badprog.c错误地访问内存/
#include <stdio.h>
#include<stdlib.h>

int main(int argc,char **argv)
{
char *p;
int i;
p=malloc(30);
strcpy(p,”not 30 bytes”);
printf(“p=<%s>\n”,p);
if(argc==2){
if(strcmp(argv[1],”-b”)==0)
p[50]=’a’;
else if(strcmp(argv[1],”-f”)==0){
free§;
p[0]=’b’;
}
}
/free§;/
return 0;
}
答:
6. 调试下面的程序:
/callstk.c有3个函数调用深度的调用链/
#include <stdio.h>
#include <stdlib.h>

int make_key(void);
int get_key_num(void);
int number(void);

int main(void)
{
int ret=make_key();
printf(“make_key returns %d\n”,ret);
exit(EXIT_SUCCESS);
}

int make_key (void)
{
int ret=get_key_num();
return ret;
}

int get_key_num(void)
{
int ret=number();
return ret;
}

int number(void)
{
return 10;
}
答:

7. GNU make的工作过程是怎样的?

答:
1)依次读入各makefile文件;
2)初始化文件中的变量;
3)推导隐式规则,并分析所有规则;
4)为所有的目标文件创建依赖关系链;
5)根据依赖关系和时间数据,确定哪些目标文件要重新生成;
6)执行相应的生成命令。

8. makefile的作用是什么?其书写规则是怎样的?

答:作用:定义了一系列规则,记录了文件之间的依赖关系及在此依赖关系基础上所应执行的命令序列,即定义了一系列规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译等,此外,还可以有变量定义、注释等。
书写规则:有以下通用形式:
目标文件:[相依文件…]
<tab>命令1[#注释]

<tab>命令n[#注释]
在这种形式中,依赖行从一行的开头开始书写。如果依赖行中的目标文件或相依文件较多,在同一行写不下,此时可以用续行符“\”作为该行的结尾,而在下一行接着输入相应内容。各命令行单独占一行,每个命令行的第一个字符必须是制表符<tab>,而不能使用8个空格。#号后的内容为注释。

9. 设某个正在开发的程序由以下内容组成:
① 4 个C语言源文件:a.c,b.c,c.c和d.c。设b.c和d.c都使用了defs.h中的声明。
② 汇编语言源文件assmb.s被某个C语言源文件调用。
③ 使用了在/home/user/lib/libm.so中的一组例程。
设最后生成的可执行文件名为prog。试编写相应的makefile文件。

答:makefile文件如下:
prog:a.o b.o c.o d.o assmb.o
     gcc a.o b.o c.o d.o assmb.o -L/home/user/lib -lm  -o prog
a.o:a.c
     gcc -c a.c
b.o:b.c defs.h
     gcc -c b.c
c.o:c.c
     gcc -c c.c
d.o:d.c defs.h
     gcc -c d.c
assmb.o:assmb.s
     as -o assmb.o assmb.s
clean:
     rm prog *.o

课后答案文档下载

需要课后文档下载的小伙伴
可以前往海轰的微信公众号:海轰Pro
回复:海轰
就可以啦

### 回答1: 《Linux教程第四版》是由孟庆昌编写的一本关于Linux操作系统的教程。该书详细介绍了Linux的基础知识、命令行操作、文件系统、网络配置、软件安装等方面的内容,适合初学者和进阶者阅读。此外,书中还包含了大量的实例和练习,帮助读者更好地理解和掌握Linux操作系统。 ### 回答2: 《Linux教程第四版》是由孟庆昌编写的一本入门级Linux教材。本书以通俗易懂的方式,系统全面地介绍了Linux操作系统的基本知识和使用方法。 首先,本书从Linux的发展历史和背景入手,详细介绍了Linux的特点、优势以及在不同领域中的应用。接着,逐步展开关于Linux的安装和配置内容,包括硬件要求、系统安装、网络配置以及软件包管理等重要方面,帮助读者轻松上手使用Linux系统。 本书接下来重点介绍了Linux系统的文件系统和文件操作,包括目录结构、文件权限、文件管理和常用命令等。此外,还详细讲解了用户和组管理、进程管理、磁盘管理等重要主题,在实际操作中帮助读者掌握Linux系统的核心概念和技能。 此外,《Linux教程第四版》还对网络服务和安全管理进行了深入介绍。其中,网络服务部分包括DNS、DHCP、FTP、HTTP、SSH等服务的安装和配置方法,帮助读者构建和维护自己的网络环境。而安全管理部分则涵盖了用户认证、防火墙配置、漏洞扫描等内容,帮助读者提高Linux系统的安全性。 总的来说,孟庆昌的《Linux教程第四版》是一本内容全面、易于理解的入门级Linux教材。通过阅读本书,读者能够全面掌握Linux系统的基础知识和操作技能,为后续的深入学习和应用打下坚实基础。无论是对于初学者还是希望提高自己Linux技能的读者来说,这本书都是一部不可多得的参考资料。 ### 回答3: 《Linux教程第四版》是孟庆昌编写的一本关于Linux操作系统的教程。该书详细介绍了Linux的基本概念、安装配置、文件系统管理、用户和权限管理、网络服务配置等内容,适合初学者和有一定基础的读者。 本书首先介绍了Linux的历史、特点和发行版本,让读者对Linux有一个初步的了解。然后详细介绍了Linux的安装和配置过程,包括硬件支持、分区和文件系统的选择以及启动管理等内容,帮助读者顺利完成Linux的安装。 接着,书中介绍了Linux系统的基本操作命令和Shell脚本语言,读者可以通过学习这些内容来提高自己的Linux操作技能。此外,还详细介绍了文件系统的管理方法,包括文件和目录的操作、文件权限和文件系统的挂载等,让读者能够熟练管理和操作文件系统。 在用户和权限管理方面,本书介绍了用户和用户组的管理方法,以及文件和目录的访问权限置。读者可以通过学习这些内容来掌握Linux系统中用户权限的管理方法,保障系统的安全性。 最后,书中还介绍了Linux系统的网络服务配置,包括网络连接的置、网络管理和远程登录等。这些内容能够帮助读者了解Linux系统在网络环境中的配置和应用。 总体来说,孟庆昌的《Linux教程第四版》是一本全面介绍Linux操作系统的教程,内容丰富、系统性强。通过学习这本书,读者可以快速入门Linux操作系统,掌握基本的操作和管理方法,为进一步深入学习和应用Linux奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海轰Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值