20155336 2017-2018 1 《信息安全系统设计基础》2017-9-27课堂实践
2017-12-05 18:43
357 查看
20155336 2017-2018 1 《信息安全系统设计基础》2017-9-27课堂实践
第一题:vi
每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号用Vi输入图中代码,并用gcc编译通过
在Vi中使用K查找printf的帮助文档
提交vi编辑过程截图,要全屏,包含自己的学号信息
说起来很惭愧,第一次接触虚拟机,对很多地方都陌生,正好趁学习这门课程掌握一下虚拟机的基本操作。 首先创建一个文件夹,命名为text1。然后将第一道题的要求都录入进去。录入完毕后,输入`gcc *.c`, 发现了错误,然后`vi`进入到.c的文件中,修改了错误再次编译一遍,没有错误,然后就输出`./a.out`
代码链接
第二题:gcc测试
用gcc 进行预处理,编译,汇编,链接vi输入的代码生成的可执行文件中要有自己的学号
提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
第二题,按照第一节课课上记得笔记,在课下自己实践。虽然中间粗心代码出现错误,但是问题不大
代码链接
第三题:gdb测试
用gcc -g编译vi输入的代码在main函数中设置一个行断点
在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
这道题出现了很多问题,首先下载GDB,然后在设置了条件断点之后,程序调试的时候没有在断点处停下。在空循环中加个打印空行再设置条件断点然后运行就可以了。(中间由于很多次自己都忘记了编译~~~~~导致每次都会显示自己定义的n没有定义。)
代码链接
第四题:静态库测试
除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
这道题将自己的代码编译为以下形式: gcc -c add.c -o add.o gcc -c sub.c -o sub.o gcc -c mul.c -o mul.o gcc -c div.c -o div.o 然后使用ar创建一个存档文件:ar rcs mymath.a add.o sub.o mul.o div.o 编译的时候再将程序和mymath.a链接起来:gcc -static -o link1 main.o mymath.a 接着运行就可以了!
第五题:共享库
除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
创建一个共享文件 gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c 创建一个可执行的目标文件 gcc -o link2 main.c ./mymath.so 运行即可
代码链接
Makefile:
1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.2 提交Make过程截图,要全屏,包含自己的学号信息
首先上网百度了一下makefile 到底是用来做什么的 答:makefile是规则,是编译,连接等的规则,是对整个工程进行编译、连接的规则。 自我理解就是在执行make之前,需要命名一个Makefile的特殊文件,告诉它需要完成什么任务,该怎么做,在文件里输入自己想要偷懒的地方,然后设置完之后, make一下就可以了!
代码链接
Myod:
1 复习c文件处理内容2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
main与其他分开,制作静态库和动态库
编写Makefile
5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
od -tx -tc的功能:就是在十六进制输出其ascii值的同时,显示对应的文件内容
代码:
#include"head.h" void main(int argc,char *argv[]) { char ch[16]; int a,j,i,x = 0; int in=open(argv[1],O_RDONLY,0); printf("%07o",0); printf(" "); while((a=read(in,ch,16))!=0) {x++; for(i=0;i<a;i++) if(!iscntrl(ch[i])) printf("%4x",ch[i]); printf("\n"); printf(" "); for(j=0;j<a;j++) if(!iscntrl(ch[j])) printf("%4c",ch[j]); printf("%07o",16*(x-1)+a); printf(" "); } close(in); }
补充(参考结对同伴的博客 理解了老师的意思!)
通过这次的课堂实践我认识到我实现的是od -tc -tx的功能,而od -tc -tx1实现的功能是将内容以十六进制显示,并以一个字节为单位,两者的区别是多了一个1,如果tx后面没有参数,默认的是四字节为一组,如有参数SIZE,以SIZE字节为一组输出。修改代码后,实现od -tc -tx1功能。相关文章推荐
- 20155336 2017-2018 1 《信息安全系统设计基础》2017-10-25课堂实践
- 2017-2018-1 20155321 《信息安全系统设计基础》课堂实践——实现mypwd
- 2017-2018-1 20155317 《信息安全系统设计基础》课堂实践——实现mypwd
- 2017-2018-1 2015335 《信息安全系统设计基础》 第4周课上实践 (新补的,但不完整)
- 2017-2018-1 20155338 《信息安全系统设计基础》 第二周课堂测试
- 2017-2018-1 20155331+20155336《信息安全系统设计基础》实验一报告
- 2017-2018-1 20155226 《信息安全系统设计基础》课下实践——实现mypwd
- 2017-2018-1 20155220 《信息安全系统设计基础》课下实践——实现mypwd
- 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
- 2017-2018-1 20155308 《信息安全系统设计基础》课堂第六章测试(补做)
- 20155229 2017-2018-1 《信息安全系统设计基础》18.1.3课上实践重做
- 2017-2018-1 《信息安全系统设计基础》 20155322 十六周 课上实践
- 2017-2018-1 20155215 《信息安全系统设计基础》 第4周课上实践
- 2017-2018-1 20155336 《信息安全系统设计基础》实验五 通信协议设计
- 2017-2018-1 20155239学号 《信息安全系统设计基础》课堂测试补做+第四周学习总结
- 2017-2018-1 20155331+20155336《信息安全系统设计基础》实验一报告
- 2017-2018-1 20155231 《信息安全系统设计基础》 第二周课堂测试
- 2017-2018-1 20155333 《信息安全系统设计基础》课堂测试
- 2017-2018-1 20155327 《信息安全系统设计基础》课堂测试&课下作业
- 2017-2018-1 20155315 《信息安全系统设计基础》实验三 实时系统