2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

测试3-gdb测试

  • 用gcc -g编译vi输入的代码
  • 在main函数中设置一个行断点
  • 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
  • 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 用vi写好代码后需要将此代码复制出来并保存到文件 .c 中,然后切换到此文件所在目录,用gcc编译gcc -g *.c -o main注意一定要有-g参数,然后用gdb main弹出窗口后在(gdb)环境下l查看代码,设断点如图所示,最后用q退出
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

测试4-静态库

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod
  • 创建静态库,需要用到AR工具,命令如下:
  • gcc -c xxx.c xxx2.c
  • ar rcs xxxxx.a xxx.o xxx2.o
    要测试test.c,则gcc -c test.cgcc -static -o prog test.o ./xxxxx.a,prog是自定义的输出文件夹,./是指在当前路径下的静态库,如果不是当前路径下的静态库,加上路径。

测试5-共享库

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 动态库的生成和调用
  • 若要生成一个mytest.so的动态库,发出指令gcc -shared -fpic -o mytest.so xx.c xx.c,用gcc -o prog main.c ./mytest.so进行动态库的链接

2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

测试6-makefile

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

  2. 提交Make过程截图,要全屏,包含自己的学号信息
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod
    在make过程中出现如下问题
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod
    每个命令行必须以[tab]开头,来告诉make这是个命令,因此需要将gcc前敲tab键

Myod

要求

  1. 复习c文件处理内容
  2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
  3. main与其他分开,制作静态库和动态库
  4. 编写Makefile

分析

用户通常使用od命令查看特殊格式的文件内容。

  • - t指定数据的显示格式,主要的参数有:
    • c ASCII字符或反斜杠序列
    • x 十六进制数
  • linux下tc命令运行结果
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

  • linux下tx命令运行结果
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

在linux下写代码的过程中遇到以下三个问题

  1. 在运行myod时,程序显示bash: ./myod:权限不够在网上查询类似情况时,看到一种解决方案是输入chmod u+x myod
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

  2. 未预期的符号有语法错误
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod
    参考其他博客后在()前面增加转义符号“  ”可以使程序不报错,修改后代码如下:
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

  3. 运行结果
    2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

上一篇:20170531 课堂实践 MyOD


下一篇:我永远喜欢着OOP——第一次总结