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.代码推送到代码托管平台;

图片:

出现的问题

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

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

总结

    通过这一周的学习,我深入了解了gcc有关的知识,通过不断地遇到问题解决问题,加深了我对本周知识的理解,掌握了动态库与静态库的知识,在做测试中提高了我的动手能力,更加使我自己知道了自己动手解决完问题是有很大的成就感的,我相信这对我以后的学习很有帮助。

猜你喜欢

转载自www.cnblogs.com/20165336kzq/p/9694182.html
今日推荐