zoukankan      html  css  js  c++  java
  • 20145208 《信息安全系统设计基础》第2周学习总结

    20145208 《信息安全系统设计基础》第2周学习总结

    教材学习内容总结

    vi的基本操作

    • vim 文件名:打开当前目录下相应的文件(如果不存在会自动新建)

    • 光标移动:

      • h-←,j-↓,k-↑,l-→,方向键也可以控制相应的光标移动方向;w-移动到下一个单词,b-移动到上一个单词。
      • [[ 转到上一个位于第一列的"{";]] 转到下一个位于第一列的"{";{ 转到上一个空行;} 转到下一个空行
    • 插入模式:(不同模式之间需要先esc退出后才能切换)

      • i 在当前光标处进行编辑
      • I 在行首插入
      • A 在行末插入
      • a 在光标后插入编辑
      • o 在当前行后插入一个新行
      • O 在当前行前插入一个新行
      • cw 替换从光标所在位置后到一个单词结尾的字符
    • 保存和退出vim:

      • w 保存文档
      • :q! 强制退出,不保存
      • :q 退出
      • :wq! 强制保存并退出
      • :w <文件路径> 另存为
      • :saveas 文件路径 另存为
      • :x 保存并退出
      • :wq 保存并退出
    • 删除文本

      • x 删除游标所在的字符
      • X 删除游标所在前一个字符
      • Delete 同x
      • dd 删除整行
      • dw 删除一个单词(不适用中文)
      • d$或D 删除至行尾
      • d^ 删除至行首
      • dG 删除到文档结尾处
      • d1G删至文档首部

    gcc

    • 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
    • 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl
    • 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as
    • 链 接:gcc hello.o –o hello ;gcc -o 调用ld

    gdb

    • gdb programm(启动GDB)
    • b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    • run 开始运行程序
    • bt 打印函数调用堆栈
    • p 查看变量值
    • c 从当前断点继续运行到下一个断点
    • n 单步运行
    • s 单步运行
    • quit 退出GDB

    静态库和共享库

    • 静态库制作(以实验为例)

      • gcc -c add.c sub.c mul.c div.c

      • ar rcvs libmymath.a add.o sub.o mul.o div.o

      • gcc main.c -o main -L. -lmymath (or gcc main.c ./libmymath.a -o main)

    • 共享库制作(以实验为例)

      • 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

      • libmymath.so 要拷贝到/lib or /usr/lib

    makefile

    • 以实验为例
    • gcc -c code.c -o code.o
    • gcc -c prog.c -o prog.o
    • gcc prog.o code.o -o test

    教材学习中的问题和解决过程

    问题一:敲入:wq 退出保存时,出现 E212:无法打开并写入文件 的错误提示。

    • 这是由于在该目录下当前用户没有写权限导致。

    • 解决方案:在不需要root权限的文件夹中建立文件

    • 或保存文件时用 : w ! sudo tee %(tee 用于读取输入文件,同时保存;%表示当前编辑文件 )

    问题二:不能成功编译

    • 如下错误:

    • 源代码没有加stdio.h头文件

    问题三:未定义引用

    • 暂时合并到一个c文件中,但正确的解决方式应该不是这样

    课后作业中的问题和解决过程

    7.8

    答:

    • A.main.1,main.2;
    • B.UNKNOWN;
    • C.ERROR.

    7.10

    答:

    • A.gcc p.o libx.a p.o
    • B.gcc p.o libx.a liby.a libx.a
    • C.gcc p.o liby.a libx.a liby.a libz.a

    其他(感悟、思考等,可选)

    代码托管截图

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/2 20/20 学会了虚拟机安装和Ubuntu的基本操作
    第二周 56/56 1/3 20/40 学会了Ubuntu终端下的C语言编写

    参考资料

  • 相关阅读:
    浅析NetFilter和iptables
    关于skb_header_pointer函数
    Linux kernel 绝对路径之d_path篇
    几个内核函数:filp_open、filp_read、IS_ERR、ERR_PTR、PTR_ERR
    一文读懂数字签名
    Nginx配置文件nginx.conf中文详解(总结)
    nginx 重写 rewrite 基础及实例
    最完美解决Nginx部署ThinkPHP项目的办法
    nginx中的try_files指令解释
    js电话号码正则校验--座机和手机号
  • 原文地址:https://www.cnblogs.com/20145208cy/p/5905738.html
Copyright © 2011-2022 走看看