您的位置:首页 > 其它

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

2015-09-27 21:13 513 查看
一、学习目的

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.所有的源文件没有被编译过,则对各个 C 源文件进行编译并进行链接,生成最后的可执行程序;

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

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

make的问题:对于静态库和动态库的知识还未能消化,希望能通过以后的实际操作来掌握,也希望老师在课堂上能着重讲讲这些知识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: