• 20155236 2017-2018-1 《信息安全系统设计基础》第2周课堂实践


    20155236 2017-2018-1 《信息安全系统设计基础》第2周课堂实践

    第二周测试1-vi测试

    • 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
      1.用Vi输入图中代码,并用gcc编译通过
      2.在Vi中使用K查找printf的帮助文档
    • 提交vi编辑过程截图,要全屏,包含自己的学号信息

    课上已经提交。

    第二周测试2-gcc测试

    • 用gcc 进行预处理,编译,汇编,链接vi输入的代码
    • 生成的可执行文件中要有自己的学号
    • 提交预处理,编译,汇编,链接,运行过程截图,要全屏 ,包含自己的学号信息

    课上已提交。
    遇到问题:在编译时发现有错误。
    解决:用vim打开进行修改,发现是有的""打的有问题。

    第二周测试3-gdb测试

    • 用gcc -g编译vi输入的代码
      -在main函数中设置一个行断点
      -在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
      -提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    遇到的问题:
    1.因为mac系统没有升级,gdb不支持版本。所以我换到了windows模式下,用VM运行linux系统。
    2.在运行命令时出现collect2error ld returned 1 exit status
    我换了命令gcc -g *.c -o main运行。
    3.还有错误 没有那个文件或目录
    查询后发现,是因为没有源代码,因为换了系统我的代码是直接从码云上重新下的,所以我删掉之前的可执行文件,并且重新编译。

    第二周测试4-静态库的测试

    • 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
    • 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
      静态库是一系列的目标文件(.o文件)的归档文件((lib+name).a文件);链接阶段,选择静态库,后缀名为“.a”,选择动态库,后缀名为“.so”

    生成的math.a如上图所示,命令如下:

    ar cr math.a add.o sub.o mul.o div.o
    gcc main.c ./math.a -o main 
    

    第二周测试5-共享库

    • 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
    • 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    gcc -fPIC -c add.c sub.c mul.c div.c   
    gcc -shared -o libmymath.so add.o sub.o mul.o div.o   
    

    gcc -o main main.c -L. -lmymath
    生成共享库如下:

    第二周测试6-Makefile

    • 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

    • 提交Make过程截图,要全屏,包含自己的学号信息

    首先vim Makefile进入编辑,输入代码并保存。
    输入make,进行自动化编译
    执行./testmymath查看结果

    遇到问题:1.makefile2***missing separator(Did u mean TAB instead of 8 spaces?)

    检查后发现是自己打错了一个字母。
    2.重新运行发现:makefile22***missing separator.STOP
    查了以后发现需要以tab开始。即:

    myod

    • 复习c文件处理内容
    • 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
    • main与其他分开,制作静态库和动态库
    • 编写Makefile
    • 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

    实现od -tc -tx1 XXX命令,-tc表示输出ASCII字符,-tx1表示以十六进制输出,每组输出一字节。

    • 什么是od命令?
      od命令用来格式化输出文件中的数据
      说明:常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。od命令一般用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出。

    一、(设立一个need.txt进行调用)
    ar cr MYOD.a hex.o ascii.o
    ./a.out

    二、静态库

    代码如图所示

    三、动态库和makefile

  • 相关阅读:
    selenium + python 环境配置 (三)之启动chrome
    selenium + python 环境配置 (二)之启动IE
    selenium + python 环境配置 (一)
    知源图四点坐标和目标图四点坐标,求透视变换矩阵
    memset()初始化为1的那些事
    NSOJ 4621 posters (离散化+线段树)
    申请到新博客了好开心
    SpringCloud之Hystrix-Dashboard监控,以及踩的坑...
    SpringBoot中在除Controller层 使用Validation的方式
    Docker安装ElasticSearch 以及使用LogStash实现索引库和数据库同步
  • 原文地址:https://www.cnblogs.com/fcgfcgfcg/p/7614912.html
Copyright © 2020-2023  润新知