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

Linux下C语言编程基础实验报告

学习任务

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

2. 熟悉vi的基本操作

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

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

5 .熟练使用gdb调试技术

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

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

学习内容

1. 快捷键

2. vim

3. gcc

4. gdb

5. make与makefile

学习过程记录

第一部分

第一讲第一节:移动光标

H左、j下、k上、l右

第一讲第二节:VIM的进入和退出

<ESC>键:确保处在正常模式

:q!退出编辑器(丢弃改动)

第一讲第三节:文本编辑之删除

X键;删除光标所在位置的字符。

第一讲第四节:文本编辑之插入

i键:在光标处插入文本。

第一讲第五节:文本编辑之添加

A键:行末添加文本。

第一讲第六节:编辑文件

使用一个可以改动的文件(进入vim编辑器):shell中输入:vim  tutor<回车>

Vim:启动vim编辑器;tutor:希望编辑的文件的名字

wq<回车>:保存退出

第二讲第一节:删除类命令

dw:删除光标所在的单词

第二讲第二节:更多删除命令

S$:从光标处删至当前行尾。(从当前位置之后整行)

第二讲第三节:关于命令和对象

操作符

动作

d(删除操作符)

W从当前光标当前位置直到下一个单词起始处,不包括它的第一个字符

E从当前光标当前位置直到单词末尾,包括最后一个字符

$从当前光标当前位置直到当前行末

第二讲第四节:使用计数指定动作

在动作前加入数字使它重复那么多次

如:2w(光标向前移动两个单词)、3e(光标向前移动到第三个单词的末尾)、0(移动光标到行首)

第二讲第五节:使用计数以删除更多

在使用操作符时输入数字可以使它重复多次

如:d2w(删除两个大写字母单词)

正常模式下修改命令的格式:operator(操作符)  [number](可以附加的数字,代表次数)  motion(动作)

第二讲第六节:操作整行

dd:删除整个当前行(2dd:删除两行)

第二讲第七节:撤销类命令

U:撤销对整行的修改;u:撤销最后执行的命令

Ctrl +r:撤销之撤销

第三讲第一节:置入类命令

  1. 输入dd将改行删除,会将该行保存在vim的一个寄存器中
  2. p键:将最后一次删除的内容置入光标之后

第三讲第二节:替换类命令

r键:替换光标所在位置的字符

第三讲第三节:更改类命令

ce键:更改文本直到一个单词的末尾(cw键类似)

第三讲第四节:使用c更改更多

更改类操作符操作格式:c  [number]  motion

如:cw;更改单词;c$更改光标之后整行

第四讲第一节:定位及文件状态

  1. ctrl+g:显示一个状态信息行,显示当前编辑的文件名和文件中光标位置(行号)
  2. G键:使当前光标直接跳转到文件最后一行。

gg键:使当前光标直接跳转文件第一行。

  1. 输入之前行号+G,回到之前行

第四讲第二节:搜索类命令

/+字符串:在当前文件中查找该字符串

  1. n:查找同上一次的字符串,可在同一方向上查找;
  2. N:向相反方向查找同上一次的字符串
  3. 用?代替/:逆向查找字符串
  4. ctrl+O:回到之前的位置;

ctrl+I:跳转到较新的位置

查找到达文件末尾后,会自动从文件头部继续查找

第四讲第三节:配对括号的查找

%:查找配对的括号),],}

(光标应该在所需查找的括号处)

第四讲第四节:替换命令

在一行内替换头一个字符串old为新的字符串new,输入  :s/old/new

在一行内替换所有的字符串old为新的字符串new,输入  : s/old/new/g

在两行内替换头一个字符串old为新的字符串new,输入  :#,#s/old/new/g(#,#代表的是替换操作的若干行中收尾的行号)

在文件内替换头一个字符串old为新的字符串new,输入  :%s/old/new/g

进行全文替换是询问用户确认每个替换需添加c标志      :%s/old/new/gs

第五讲第一节:在VIM内执行外部命令的方法

:命令:光标移动到屏幕底部以输入命令

然后输入!命令:允许执行外部的shell命令

如::!ls;:!dir

第五讲第二节:关于保存文件的更多信息

:w TEST:以TEST为文件名保存整个文件

:!del TEST:在MS-DOS下删除TEST文件

:!rm TEST:在unix下删除TEST文件

第五讲第三节:一个具有选择性的保存命令

可视模式下保存文件的部分内容:v  motion:w  FILENAME

  1. 移动光标
  2. 按v键,移动光标,文本高亮
  3. 按:键,屏幕底部出现:’<,’>
  4. 输入 w  TEST(TEST是未被使用的文件名),回车
  5. 使用:!dir或:!ls查看存储的文件

第五讲第四节:提取和合并文件

向当前文件中插入另外的文件的内容,输入:r FINENAME

如:r  TEST将前面创建的名为TEST的文件提取进来,放在光标后面

:r!dir可以读取dir命令的输出并将其放置在当前文件的光标位置后面

第六节第一讲:打开类命令

O:在光标的上方打开新的一行并进入插入模式

o:在光标的下方打开新的一行并进入插入模式

第六节第二讲:附加类命令

a:在光标所在位置之后插入文本

A:在光标所在行的行末之后插入文本

e:可以使光标移动到单词末尾

第六节第三讲:另外一个置换类命令的版本

大写R将进入替换模式,可连续替换多个字符,直到回到正常模式

第六节第四讲:复制粘贴文本

使用v进入可视模式,然后使用操作符y复制文本,使用p粘贴文本。

第六节第五讲:设置类命令选项

输入:set  xxx可以设置xxx选项:

‘ic’ ‘ignorecase’   查找时忽略字母大小写

‘is’ ‘incsearch’    查找短语时显示部分分配

‘hls’ ‘hlsearch’    高亮显示所有的匹配短语

选项名可以用完整版本,也可以用缩略版本

禁用忽略大小写::set  noic

移除匹配项的高亮显示::nohlsearch

仅在一次查找时忽略字母大小写:\c:/ignore\c<回车>

第七节第一讲:获取帮助信息

启动帮助系统:

1.<help>键

2.<F1>键

3.help<回车> 如:输入help cmd可以找到cmd命令的帮助。

输入CTRL-W可以在窗口之间跳转

输入:q<回车>可以关闭帮助窗口

第七节第二讲:创建启动脚本

  1. 开始编辑vimic文件::edit ~/.vimic  (Unix系统)
  2. 读取vimic示例文件的内容::r $VIMRUNTIME/vimic_example.vim
  3. 保存文件::write

(获得语法高亮)

第七节第三讲:补全功能

使用ctrl-D和<TAB>可以进行命令行补全

补充:

1.确保Vim不是在以兼容模式运行::set  nocp

2.添加一个空格,以及一个已有文件名的起始部分,然后按<tab>键,会补全文件名

 第二部分gcc

GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统

  • 预处理: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部分连同教材学习部分博客写在另一个博客里

第三部分gdb

基本的命令有:

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

 

遇到的问题

1.静态库?什么是静态库?

2.开发工具和资源的位置到底放在哪?

如何解决的

 查找相关博客,写的比较详细

 Linux下Gcc生成和使用静态库和动态库详解 

http://blog.chinaunix.net/uid-23592843-id-223539.html

其他

博客实在是太长了,分两部分写,这一部分是在实验楼实验内容。

posted @ 2015-09-27 21:59  苏儿  阅读(333)  评论(0编辑  收藏  举报