20135219洪韶武——信息安全系统设计基础第二周学习总结

信息安全系统设计基础第二周学习总结

一、vim编辑器

1.实验楼——vim编辑器

(1)vim的六种模式

  普通模式、插入模式、可视模式、选择模式、命令行模式、Ex模式

(2)三种模式常用切换

  vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[即可进入普通模式。普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。命令行模式中输入wq回车后保存并退出vim。

(3)命令行模式下保存文档

  从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下

 

2.vimtutuor练习

第一讲小结

注意:第一讲的内容是一些基本的vim编辑器操作,按照讲解步骤练习,很好掌握,但需要多练多用才能牢记各个操作指令。

 

第二讲小结

注意:第二讲需要分清楚dw d$ dd三个操作分别删除的内容,尤其要记住dw和dd具体进行重复删除的方法,dw是在中间加上重复删除次数,而dd是在前面加数字。

接下来的几讲内容也都是vim编辑器的一些操作,跟着做一遍感觉没有什么大问题。

 

二、实验楼——深入理解计算机系统

1.Linux基础

(1)Linux命令

命令格式为:

  command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数

解释:

  可以在#或$符后面去输入命令。

  options是选项,选项是调整命令执行行为的开关,选项不同决定了命令的显示结果不同。

  arguments是参数,参数是指命令的作用对象。

(2)man命令

  man是manul的缩写,可以通过man man来查看man的帮助

帮助文档包含:

  1 Executable programs or shell commands(用户命令帮助) 【是普通的Linux命令 

  2 System calls (系统调用帮助) 【是系统调用,操作系统的提供的服务接口

  3 Library calls (库函数调用帮助) 【是库函数, C语言中的函数

  4 Special files (usually found in /dev)  
  5 File formats and conventions eg /etc/passwd(配置文件帮助)【是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

  6 Games 【是给游戏留的,由各个游戏自己定义 

  7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)【是附件还有一些变量,比如向environ这种全局变量在这里就有说明 】  

  8 System administration commands (usually only for root)【是系统管理用的命令,这些命令只能由root使用,如ifconfig】  

  9 Kernel routines [Non standard]

相关操作练习:

体会:man printf与man 1 printf没有区别但man 3 printf有,另外使用man -k sort命令搜索查找C库函数中有没有sort这个功能的函数,比较方便好用

(3)cheat命令

  cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。

(4)其他命令

  和查找相关的核心命令还有find,locate,grep,whereis,which,其中:

  find查找一个文件在系统中的什么位置

  locate是神速版本的find

  grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识

  whereis,which告诉你使用的命令工具装在什么地方

2.Linux下C语言开发基础

(1)需要掌握以下几点

  熟悉Linux系统下的开发环境

  熟悉vi的基本操作

  熟悉gcc编译器的基本原理

  熟练使用gcc编译器的常用选项

  熟练使用gdb调试技术  

  熟悉makefile基本原理及语法规范

  掌握静态库和动态库的生成

(2)vi基本操作

注意:vi快捷键操作,vimtutuor练习见vim编辑器部分

几个快捷键提示:

  :set nu 显示行号

  :set ai 自动缩行

  :set ts=4 设置一个 TAB 键等于几个空格

移动光标:
  [[ 转到上一个位于第一列的"{"

  ]] 转到下一个位于第一列的"{"

  { 转到上一个空行

  } 转到下一个空行

  gd 转到当前光标所指的局部变量的定义

(3)gcc编译(此处一并学习课本第1章,重点学习第7章7.6、7.10)

  gcc编译过程可分为四个步骤:

  hello.c->预处理器hello.i->编译器hello.s->汇编器hello.o->链接器hello

  预处理: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

  其中:hello.c叫做源程序,hello叫做可执行目标程序,编译具体过程课本P3有详细讲解

  此处学习博客Linux gcc常用命令 地址:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html

操作练习:

体会:

  在gedit中编写测试程序,然后使用gcc test.c -o test命令进行编译,然后使用./test命令执行程序。

(4)gdb调试(此处学习博客GDB详解 地址:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2288004.html)

  输入gcc -g test.c -o test进行编译

  输入gdb test启动gdb

  执行设置断点【b】执行程序等操作【run】

操作练习:

  常用命令:

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

(5)makefile

 

  不知道为什么我的实验楼中没有关于makefile部分的讲解与示例,此处学习参考同学博客中的笔记与百度搜索完成 

  (1)进入

      vim Makefile

  (2)需要由make工具创建的目标体,通常是可执行文件和目标文件,也可以是要执行的动作,如‘clean’;

      要创建的目标体所依赖的文件,通常是编译目标文件所需要的其他文件。

      创建每个目标体时需要运行的命令,这一行必须以制表符tab开头

    示例:

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

  1.练习vimtutuor至少一遍;

  2.使用vim 输入代码,联系使用“K”查找帮助文档:

  3.练习gcc编译运行代码;

  4.练习gdb调试代码;

  5.把上述代码中除了main函数外的代码制作成一个静态库math.a和一个共享库math.so;

  6.编写makefile,让代码编译,上述静态库和共享库的使用自动化。

 

练习步骤:

使用vim输入代码保存文件,使用gcc编译

编译出错,从上图中可以看出add.c文件有错,重新打开vim add.c,检查错误并改正

找到错误,return a+b 后忘记加;,改正后重新编译

编译成功后运行程序,并用gdb进行调试

建立静态库并进行链接

出错

 

posted @ 2015-09-29 01:02  5219hsw  阅读(368)  评论(0编辑  收藏  举报