2019-2020-1 20175320 《信息安全系统设计基础》第三周学习总结

Posted nameless-student

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-2020-1 20175320 《信息安全系统设计基础》第三周学习总结相关的知识,希望对你有一定的参考价值。

2019-2020-1 20175320 《信息安全系统设计基础》第一周学习总结

一、教材学习内容总结

本周我们了解并练习了gcc的使用,并在此基础上进行gdb以及makefile的使用。围绕gcc,本周的内容可以分为以下几部分:利用gcc的-E、-S、-c这三个参数对c文件进行逐步编译;将c文件中的函数转化为函数库,并对库函数进行调用;使用makefile对程序进行自动编译;使用gdb调试程序。在本博客中我使用了老师提供的main.c程序作为例子,下图为程序代码。
技术图片

使用gcc的-E、-S、-c这三个参数对c文件进行逐步编译

  • 此处需要注意的是,这三个参数的大小写不可随意更改,且有这些参数的命令不能同时对多个文件进行操作。
    技术图片
  • 若进行操作的文件不在当前目录,可以在文件名前加上文件路径。
  • 多模块操作时,可以将多个c文件直接编译成可执行文件,也可将c文件先编译成.o文件,再将.o文件进行链接。
  • 在进行编译的过程中,warning提示是可以忽略的,并不影响过程的进行。
    该部分的部分过程以及运行结果如下图:
    技术图片

将c文件中的函数转化为函数库,并对库函数进行调用

  • 静态库与动态库的生成过程十分相似,都是先编译并汇编得到所调用函数的可重定位目标程序,然后通过命令基于这些文件生成库文件,最后在编译主程序的过程时通过-L以及-l参数将主程序与函数库链接起来
  • 当进行操作的文件不在当前目录时,可以在文件前添加路径来找到文件。
    该部分的部分过程以及运行结果如下图:
    静态库:
    技术图片
    动态库:
    技术图片

使用makefile对程序进行自动编译

  • 编写好makefile文件后,可以使用make命令对文件进行自动编译,makefile代码中进行操作的文件如果不在makefile文件所在的目录,需要在文件名前添加文件路径
    本例的makefile代码如图:
    技术图片
    makefile的运行结果如下:
    技术图片
    本例的文件结构如下图:
    技术图片

使用gdb调试程序

  • 在使用gdb进行调试时,需要使用-g参数对c文件进行编译
    在这里我仍然使用main.c作为例子,gdb各命令的结果如下图所示:
    gdb编译:
    技术图片
    gdb list命令:
    技术图片
    gdb info查看断点:
    技术图片
    gdb next命令:
    技术图片

二、教材学习中的问题和解决过程

这周的内容并不困难,没有遇到十分难以解决的问题。

三、代码调试中的问题和解决过程

  • 问题1:按照ppt编写makefile文件,运行时显示找不到文件。
  • 问题1解决方案:修改makefile代码,在操作文件名前添加文件路径。
    技术图片
  • 问题2:gdb调试时使用step命令无法进行数据输入。
  • 问题2解决方案:使用next命令调试程序。

四、代码托管

技术图片

五、上周考试错题总结

  • 上周无测试。

六、其他(感悟、思考等,可选)

在本周的内容中,我了解了多种编译的方式,直接编译、生成库函数、编写makefile代码。而碰到的问题绝大多数都与文件路径有关,这提示我在日常的电脑使用中一定要注意文件的路径,注意不要随意更改一个文件的位置。

七、学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3000行 25篇 300小时
第一周 54/54 1/1 13/13

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

以上是关于2019-2020-1 20175320 《信息安全系统设计基础》第三周学习总结的主要内容,如果未能解决你的问题,请参考以下文章

2019-2020-1 20175320 《信息安全系统设计基础》 myod-who-ls功能实现

2019-2020-1 20175310 20175317 20175320 实验二 固件程序设计

2019-2020-1 20175310 20175317 20175320 实验五 通讯协议设计

2019-2020-1 20175310 20175317 20175320 实验三 实时系统

2019-2020-1 20175310 20175317 20175320 实验三 实时系统

2019-2020-1 20175310 20175317 20175320 实验四 外设驱动程序设计