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


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

    一:学习知识点

    1.ctrl+alt+t 打开命令行窗口
    2.编辑vim,编译gcc,调试gdb
    3.vi XX.c(文件名)
    4.i/esc 控制插入
    5.X 删除
    6.a.out 为可执行文件
    7.预处理,编译,汇编,链接
    预处理:gcc -E xx.c -o xx.i
    编译:gcc -S xx.i -o xx.s
    汇编:gcc -c xx.s -o xx.o
    链接:gcc xx.o -o xx
    8.创建文件夹mkdir project,其中包含src,include,lib,bin
    9.vim中dd删除行
    10.DRY原则 don‘t repeat yourself
    11.头文件申明注意要小写
    12.申明头文件在哪用-I
    13.XX.C模块是为了实现,XX.H模块是接口
    14.静态库xx.a 动态库xx.so

    二:班课作业

    1、测试1 -vi

    作业要求

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

    解决过程:通过gcc -c xx.c -o xx.o完成编译,在vim中再有printf行处按shift+K查找

    图片:

    2、测试2-gcc测试

    作业要求

    1.用gcc 进行预处理,编译,汇编,链接vi输入的代码
    2.生成的可执行文件中要有自己的学号
    提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
    3.代码推送到代码托管平台

    解决过程:运用预处理,编译,汇编,链接 -ESC -iso完成

    图片:

    3、测试3-gdb测试

    作业要求

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

    解决过程:运用 gcc -g xx.c -o xx,然后gdb xx文件进行调试,其中b+行数 设置断点,b+行数+if+条件为设置条件断点,r为运行到断点,c为从一个断点运行到下一个断点

    图片:

    4、测试4-静态库的测试

    作业要求

    1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
    2.提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
    3.代码推送到代码托管平台;

    解决过程:参考静态库与动态库的区别

    图片:

    5、测试5-共享库

    作业要求

    1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
    2.提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息;
    3.代码推送到代码托管平台;

    解决过程:参考静态库与动态库的区别

    图片:

    6、测试6-Makefile

    作业要求

    1.写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
    2.提交Make过程截图,要全屏,包含自己的学号信息
    3.代码推送到代码托管平台;

    图片:

    三、课下测试代码托管

    课下测试:MyOD

    学习资料

    -A:指定地址基数,od命令的输出最左侧的1列为偏移量。默认的偏移量使用8进制,可以使用-A进行修改。
    格式为:-A 参数.可以使用的参数有:d:十进制;o:八进制;x:十六进制;n不显示偏移量这一列。
    -j:文件打开时,跳过的字节数量。
    格式为:-j BYTES.BYTES是一个数值,用0开头表示8进制,用0x开头表示16进制,用b作为后缀表示1个字节,用k作为后缀表示1024个字节,用m作为后缀表示1048576个字节。
    -N:用于限制输出的字节的数量
    格式为:-N BYTES.BYTES的格式同上。
    -S:用于指定输出的串占多少个图形字符的位置
    格式为:-S BYTES.
    -t:选择输出格式。
    格式为:-t [acdfoux][size].
    a:每个ASCII码对应的名字。
    b:用八进制字节表示的字符对应的ASCII码值
    d:有符号数值,SIZE个字节
    f:浮点数,SIZE个字节
    o:八进制数,SIZE个字节
    u:无符号数值,SIZE个字节
    x:十六进制数,size个字节

    注意:这里的SIZE是一个数值或者是一个字母。字母的范围为:[CSILFD]。对于非f类型的,一般选择CSIL.其中C表示sizeof(char),S表示sizeof(short),I表示sizeof(int),L表示sizeof(long).如果类型为f,sizeof可以是F或者是D,分别表示sizeof(float)或者sizeof(double).

    可以使用传统的格式:分别为:
    -a:等价于 -t a.表示ASCII码的名字
    -b:等价于-t o1,选择单字节,并且按照3个数值位的八进制数进行解释
    -c:等价于-t c,选择ASCII码字符或者是转义字符
    -d:等价于-t u2:选择无符号2字节单位
    -f:等价于-t fF,选择单精度浮点数
    -i:等价于-t dI,选择十进制整型
    -l:等价于-t dL,选择十进制长整型
    -o:等价于-t o2,选择两个字节的单元并按照八进制进行解释
    -s:等价于-t d2,选择两字节单元并按照十进制解释
    -x:等价于-t x2,选择两个字节单元,并作十六进制解释
    -v:不用*代替重复的输出
    -w:用于设置每行的宽度,即每行上输出的字节数

    od命令实现参考

    四、出现的问题

    1.gdb 调试中出现断点错误的情况,解决方法:在循环语句中加入语句。

    2.动态库中找不到testmymath.so文件,解决办法:调用sodu mv testmymath.so usr/lib解决

    五、总结

        通过这一周的学习,我深入了解了gcc有关的知识,通过不断地遇到问题解决问题,加深了我对本周知识的理解,掌握了动态库与静态库的知识,在做测试中提高了我的动手能力,更加使我自己知道了自己动手解决完问题是有很大的成就感的,我相信这对我以后的学习很有帮助。
  • 相关阅读:
    Failure [INSTALL_FAILED_ALREADY_EXISTS]
    在CentOS 7上构建RAID5、LVM和SAMBAserver(5)——架设SAMBAserver
    adb命令具体解释(二)——手机缺失sqlite3时操作数据库的多种解决方式
    【环境配置】Linux的经常使用命令
    windowsclient开发--使你的client执行时记住上次关闭的大小和位置
    【13】以对象管理资源
    C++ 初始化与赋值
    C++ 变量初始化规则
    C++ 构造和析构
    【20】宁以pass-by-reference-to-const替换pass-by-value
  • 原文地址:https://www.cnblogs.com/20165336kzq/p/9694182.html
Copyright © 2020-2023  润新知