zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结

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

    教材学习总结

    有关vim

    • 打开方式:vim [文件名]

    • i会进入insert模式,可以对代码进行编辑

    • Esc会进入普通模式,此时可以使用快捷键进行编辑,编辑方式为:

      指令 对应操作
      h 向左移动光标
      l 向右移动光标
      j 向下移动光标
      k 向上移动光标
      w 移动到下一个单词
    • vim的退出与保存

    保存并退出 不保存并退出
    :wq+回车键 Esc+q!
    Esc+Shift+zz

    有关gcc

    • 明白编译过程
    文本类型 作何处理 所用的gcc指令(当前文件类型指向待生成类型
    hello.c源程序 预处理(cpp) gcc -E hello.c -o hello.i
    hello.i修改过的源程序 编译处理(ccl) gcc -S hello.i -o hello.s
    hello.s 汇编程序 汇编处理(as) gcc -c hello.s -o hello.o
    hello.o可重定位的二进制目标程序 链接(ld)

    最终得到可执行的二进制目标程序hello

    具体题目操作

    题目一:vi

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

      image

    操作前准备:

    • 将头文件放在如下地址:

    • 文件脉络图:

    • .c文件放在src

    具体操作:

    键入的指令:gcc -I/home/tx20165221/gcc.include

    选择生成静态库

    键入指令 运行结果
    gcc -c -I/home/tx20165221/gcc.include add.c sub.c mul.c div.c 生成.o文件
    ar rcvs libmath.a add.o sub.o mul.o div.o 生成静态库
    gcc main.c -omain -I/home/tx20165221/gcc.include -L. -lmath 生成可执行文件main
    ./main 运行文件

    运行结果截图

    遇到的问题

    • 问题一:找不到头文件的位置

    • 问题一解决办法:在后台找到头文件,右键查看其属性

    • 问题二:编译运行失败

    • 问题而解决方法:输入指令 gcc main.c -omain -I/home/tx20165221/gcc.include -L. -lmath漏掉了了L后的.

    题目二:gcc测试

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

    具体操作

    文本类型 作何处理 所用的gcc指令(当前文件类型指向待生成类型
    hello.c源程序 预处理(cpp) gcc -E main.c -o main.i
    main.i修改过的源程序 编译处理(ccl) gcc -S main.i -o main.s
    main.s 汇编程序 汇编处理(as) gcc -c main.s -o main.o
    main.o可重定位的二进制目标程序 链接(ld)

    键入./main运行

    运行结果截图:

    • .o文件

    • 最终运行截图

    题目三:gdb测试

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

    具体操作:

    设置断点

    • 函数:b 文件名.c:函数名
    • 行:b 行数
    • 条件:b 行数 if 表达式(例如:b 9 if == 12)
    • 临时:tb [文件名:]行号或函数名 <条件表达式>

    实践过程

    • gcc -g *.c -o main
    • gdb main
    • b main
    • b 6 if i==5221
    • info break
    • r
    • q

    运行截图:

    题目四:静态库的测试

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

    实践过程

    • ar cr math.a add.o sub.o mul.o div.o
    • gcc main.c ./math.a -o main

    运行截图:

    题目五:共享库

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

    具体操作

    共享库的生成:

    • gcc -fPIC -c xxx.c
    • gcc -shared -o libxxx.so xxx.o

    共享库的使用

    • gcc -o main main.c -L. -lxxx
    实际操作:
    • 生成:
      gcc -fPIC -c add.c sub.c mul.c div.c

    gcc -shared -o libmymath.so add.o sub.o mul.o div.o

    使用:gcc -o main main.c -L. -lmymath

    运行截图:

    题目六:Makefile

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

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

    具体操作

    makefile文件编写规则:
    • 目标文件 :由make创建,通常是目标文件或可执行文件

    • 依赖文件 :创建目标体所依赖的文件

    • 运行命令 :创建每个目标体时需要的运行命令,必须以tab键开头,格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)

    • 使用make的格式:make目标文件

    实际操作:
    • 入vim Makefile,输入i进入编辑模式,输入代码并保存
    • 输入 make, 进行自动化编译
    • 执行 ./testmymath 查看结果

    运行结果和编写的makefile截图:

    代码统计

    • 上学期的statistics.sh被自己删了,在网上查找代码统计方法,键入sudo apt-get install cloc下载安装,即可。

  • 相关阅读:
    Ynoi2016 这是我自己的发明
    Luogu P5268 [SNOI2017]一个简单的询问
    Ynoi2017 由乃的玉米田
    BZOJ4320 [Shanghai2006]Homework
    JOISC2014C 歴史の研究
    莫队
    LOJ6119 「2017 山东二轮集训 Day7」国王
    Luogu P3295 [SCOI2016]萌萌哒
    10.1 进程间通信--消息队列
    9.2 网络协议理论
  • 原文地址:https://www.cnblogs.com/0630tx/p/9692235.html
Copyright © 2011-2022 走看看