zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    .net core读取appsettings.config中文乱码问题
    vs2017错误:当前页面的脚本发生错误
    VS Code中无法识别npm命令
    Visual Studio报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字
    记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法
    Java集合框架
    java hash表
    Java Dictionary 类存储键值
    java数据结构 栈stack
    java封装
  • 原文地址:https://www.cnblogs.com/fcgfcgfcg/p/7614912.html
Copyright © 2011-2022 走看看