信息安全系统设计基础 第二周学习笔记

一、学习目的

1. 熟悉Linux系统下的开发环境

2. 熟悉vi的基本操作

3. 熟悉gcc编译器的基本原理

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

5 .熟练使用gdb调试技术

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

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

二、vi的基本操作

由于当时做实验楼的时候,网络很卡,vim的学习是在自己电脑的虚拟机上进行的。

进入虚拟机,打开终端,输入vimtutor进行vim的学习。

首先了解vim的键盘作用:

普通模式下基本按键指令:

进入插入模式:

普通模式下的退出指令(输入':'进入命令行):

删除指令:

以下是在vimtutor中的教程:

在vim学习中使用大写U进行撤销时,没有明显的变化,而小写u就直接有撤销的效果,不知是何原因。

后来再次使用U命令时,就有撤销的效果。可能是当时操作有问题,或者当时U作用的那一行没有进行修改。

三、gcc的使用

GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。

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

前三步,GCC的参数连起来是“ESc”,相应输入的文件的后缀是“iso”。

gcc的后缀名解释:

gcc的命令选项:

实验过程:

实验中遇到的问题:

没有创建hello.c文件就进行gcc编译,出现错误,没能找到该文件。后来创建了hello.c文件后,问题便迎刃而解了。

三、gdb的运用

在命令行中输入gdb [文件名],就可以通过一下指令运行程序了。

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

五、make

准备知识:编译,链接,静态库,共享库

编译:把高级语言所书写的代码转换成机器可识别的指令,此时还不能够被执行,编译器通过检查高级语言的语法,函数和变量的声明是否正确!如果正确则产生中间目标文件(目标文件在Liunx中默认后缀为“.o”)

链接:将多.o 文件,或者.o 文件和库文件链接成为可被操作系统执行的可执行程序

静态库:又称为文档文件(Archive File) 。它是多个.o文件的集合。Linux中静态库文件的后缀为“.a

共享库:也是多个.o 文件的集合,但是这些.o 文件时有编译器按照一种特殊的方式生成(共享库已经具备了可执行条件)

 

在执行 make  之前,需要一个命名为 Makefile  的特殊文件(本文的后续将使用Makefile 作为这个特殊文件的文件名)来告诉 make 需要做什么(完成什么任务),该怎么做。

    当使用make 工具进行编译时,工程中以下几种文件在执行make 时将会被编译(重新编译): 

1.所有的源文件没有被编译过,则对各个 源文件进行编译并进行链接,生成最后的可执行程序; 

2.每一个在上次执行 make 之后修改过的 源代码文件在本次执行make 时将会被重新编译; 

3.头文件在上一次执行make 之后被修改。则所有包含此头文件的 源文件在本次执make 时将会被重新编译。

 

make的问题:对于静态库和动态库的知识还未能消化,希望能通过以后的实际操作来掌握,也希望老师在课堂上能着重讲讲这些知识。

posted @ 2015-09-27 21:13  20135312吴汉彦  阅读(262)  评论(1编辑  收藏  举报