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

Posted zxy20175227

tags:

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

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

教材学习内容总结

  • GCC
    • GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。
    • GCC编译代码的过程如下:
      技术图片

可以把编译过程分成四步,以编译hello.c生成可执行文件hello为例,如下图:
技术图片

  • 预处理:gcc –E hello.c –o hello.i gcc –E调用cpp
  • 编 译:gcc –S hello.i –o hello.s gcc –S调用ccl
  • 汇 编:gcc –c hello.s –o hello.o gcc -c 调用as
  • 链 接:gcc hello.o –o hello gcc -o 调用ld

  • GDB
    • UNIX及UNIX-like下的调试工具。GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。
    • 功能
      • 启动程序,可以设置运行环境和参数来运行指定程序
      • 让程序在指定断点处停止执行
      • 对程序作出相应调整,这样就能纠正一个错误后继续调试
    • 注意使用-g编译选项的gcc命令来编译源程序
    • 命令
      技术图片
      技术图片
  • Makefile
    • 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
    • 功能
      • 启动程序,可以设置运行环境和参数来运行指定程序

技术图片

库是共享程序代码的方式,一般分为静态库和动态库。

  • 静态库
    • 程序编译一般需经预处理、编译、 汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库。
    • 特点:
      • 可执行文件中包含了库代码的一份完整拷贝
    • 缺点:
      • 被多次使用就会有多份冗余拷贝。

技术图片

  • 动态库
    • 动态库又称动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。Windows下动态库为.dll后缀,在linux下为.so后缀。

技术图片

  • 二者区别
    • 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
    • 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

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

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

  • 问题1:编译c文件时,提示警告信息

技术图片

  • 问题1解决方案:不需要注意警告信息,不会影响编译结果

    代码托管

    技术图片

(statistics.sh脚本的运行结果截图)

上周考试错题总结

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 51/51 1/1 8/8

参考资料

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

2019-2020-1 20175227张雪莹《信息安全系统设计基础》 实验四 《外设驱动程序设计》

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

20175227张雪莹 2018-2019-2 《Java程序设计》第十一周学习总结

# 20175227张雪莹 2018-2019-2 《Java程序设计》第四周学习总结

20175227张雪莹 2018-2019-2 《Java程序设计》第五周学习总结

20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结