zoukankan      html  css  js  c++  java
  • 2017-2018-1 20155308 《信息安全系统设计基础》第二周测试(课上+课下)

    2017-2018信息安全系统设计基础

    课堂测试

    这次课堂测试我的前四项都已经完成,但是感觉自己对Linux环境还是不太了解,所以写了这篇博客总结一下这次课堂测试做题的方法和注意事项

    • 1-vi
      要求:
    1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
    2. 用Vi输入图中代码,并用gcc编译通过
    3. 在Vi中使用K查找printf的帮助文档

    这一个问题是要求我们会用命令行建立新的文件,并在文件中打入代码。方法是使用vi命令,如下图所示,如果要建立head.h,则直接打入vi head.h即可。

    在进入head.h文件中,输入文件中的代码,然后退出文件的方式是:先敲一下“Esc”,然后在下面打入"qw"(退出写代码)。

    然后就可以回到新建文件的页面,继续新建文件了。

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

    这个问题在课上讲过,下面是程序被其他程序翻译成不同的格式的命令

    1. hello.c->hello.i 预处理

    gcc -E hello.c -o hello.i
    2. hello.i->hello.s 编译

    gcc -S hello.i -o hello.s
    3. hello.s->hello.o 汇编

    gcc -c hello.s -o hello.o

    1. hello.o->hello

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

    在Linux中共有四种断点:函数断点、行断点、临时断点、条件断点。其中条件断点格式是“b if...”,例如"b 12 if i==5000"就是在第12行设置一个断点。

    要进行gdb测试,首先要进行把调试信息加到可执行文件中。

    然后对gdbtest进行gdb调试

    输入“l”显示文件中内容

    然后设置断点,进行输出

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

    ar rcs xxx.a xxx.o

    r:在库中插入模块(替换)。
    c:创建一个库。
    s:创建目标文件索引,这在创建较大的库时能加快时间。

    2.gcc -static 静态编译可执行文件,避免使用动态库的方式。

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

    建立一个有四个c文件的共享库。再输入"gcc -o xxx main.c ./mymath.so",生成一个可执行文件。最后运行该文件。

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

    2. 提交Make过程截图,要全屏,包含自己的学号信息

    我在实验楼中学习了Makefile的知识。
    https://www.shiyanlou.com/courses/24/labs/138/document
    而makefile带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。make是一个命令工具,是一个及时makefile中命令的工具程序。
    首先

    $ vim Makefile
    
    test: prog.o code.o
            gcc prog.o code.o -o test
    prog.o: prog.c code.h
            gcc -c prog.c -o prog.o
    code.o: code.c code.h
            gcc -c code.c -o code.o
    clean:
            rm -f *.o test
    

    有了这个Makefile,不论什么时候修改源文件,只要执行一下make命令,所有必要的重新编译将自动执行。make程序利用Makefile中的数据,生成并遍历以test为根节点的树;现在我们以上面的实例,来学习一下Makefile的一般写法:

    test(目标文件): prog.o code.o(依赖文件列表)
    tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
    

    Myod

    我还没有写出来这个代码,正在努力中。。。

    遇到的问题

    问题一:我在虚拟机上建立git的时候,出现了不能建立的提示。我查找了胡东辉学长的博客
    http://www.cnblogs.com/rebrust/p/5348866.html
    打开命令行模式,输入如下指令

    git config --global user.name "你的用户名" 
    git config --global user.email "你的邮箱地址"
    ssh-keygen -t rsa -C "youreamil@xxx.com"
    

    然后设置ssh公钥。我跟着胡东辉学长博客进行设置:“你的当前用户文件夹下生成一个名为.ssh的文件夹,用记事本打开该文件夹中名为id_rsa.pub的文件并复制里面的全部内容”。之后我找了半天这个文件,都没有找到,然后自己手打的公钥,检查了好几遍,还是公钥错误最后发现这个文件在隐藏文件中。

    在添加公钥后,进行

    ssh -T git@git.oschina.net
    git init
    git remote add origin http://git.oschina.net/你的用户名/你的项目名.git
    git pull origin master
    git add .
    git commit -m "提交的描述信息"
    git push origin master
    

    这个顺序建立git就没有问题了。

    总结

    这次的课堂实验测试了我们上一次课堂学习的内容,感觉我自己做笔记很认真,但是因为课下练习不足,所以才完成了前四项,而且完成的程度也不太好。通过课下练习,我重新学习了linux环境下的命令,然后对linux基础进行了温习
    https://www.shiyanlou.com/courses/1
    感觉轻松了不少。

  • 相关阅读:
    HDU 3436 Queuejumpers
    POJ 3580 SuperMemo
    HDU 2871 Memory Control
    Android 实现显示文字的Gallery
    Android 使用地图
    Android 深入的研究一下蓝牙
    手机录制视频demo
    用android来实现图片的绘制以及旋转缩放案例分析
    TextView 自动滚动(跑马灯)
    Android腾讯微博客户端开发一:在下方的Tab的实现
  • 原文地址:https://www.cnblogs.com/JIUSHA/p/7617785.html
Copyright © 2011-2022 走看看