20145223 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
一:三种常用模式的切换
·vim启动进入普通模式,处于插入模式或命令行模式时只需要按Esc或者Ctrl+[(这在vim课程环境中不管用)即可进入普通模式。
·普通模式中按i(插入)或a(附加)键都可以进入插入模式,普通模式中按:进入命令行模式。
·命令行模式中输入wq回车后保存并退出vim。
二:进入vim
使用vim命令进入vim界面
·vim后面加上你要打开的已存在的文件名或者不存在(则作为新建文件)的文件名。 打开Xfce终端,输入 vim practice.txt
·进入命令行模式后输入:e 文件路径 同样可以打开相应文件。
游标移动
·在进入vim后,按下i键进入插入模式。输入文本信息:
·按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标。
h 左
l 右(小写L)
j 下
k 上
w 移动到下一个单词
b 移动到上一个单词
三、进入插入模式
进入插入模式
命令 说明
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符
四、保存文档
·.命令行模式下保存文档:从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
五、退出vim
1.命令行模式下退出vim
·从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
·其它几种退出方式:
命令 说明
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:w <文件路径> 另存为
:saveas 文件路径 另存为
:x 保存并退出
:wq 保存并退出
2.普通模式下退出vim
·普通模式下输入Shift+zz即可保存退出vim
六、删除文本
1.普通模式下删除vim文本信息
·进入普通模式,使用下列命令可以进行文本快速删除:
命令 说明
x 删除游标所在的字符
X 删除游标所在前一个字符
Delete 同x
dd 删除整行
dw 删除一个单词(不适用中文)
d$或D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删至文档首部
·除此之外,你还可以在命令之前加上数字,表示一次删除多行,如:2dd表示一次删除2行
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
查看源文件可以用od 命令 : od -tc -tx1 hello.c
:
·Linux的可执行文件并没有像 Windows 那样有明显的.exe后缀名, 只需向其分配x(可执行)权限即可 sudo chmod u+x excutefile
·作为Linux程序员,我们可以让gcc在编译的任何阶段结束,以便检查或使用该阶段的输出(这个很重要)
GDB
查询用法:在 gdb 命令行界面,使用 (gdb) help command
可以查看命令的用法。
1.gdb programm(启动GDB)
2.b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
3.run 开始运行程序
4.bt 打印函数调用堆栈
5.p 查看变量值
6.c 从当前断点继续运行到下一个断点
7.n 单步运行
8.s 单步运行
9.quit 退出GDB
Makefile的使用
首先$ vim Makefile
test: prog.o code.o
gcc prog.o code.o -o test
prog.o: prog.c code.h
gcc -c prog.c -o prog.o
code.o: code.c code.h
gcc -c code.c -o code.o
clean:
rm -f *.o test
教材学习中的问题和解决过程
问题1:在学习实验楼关于Makefile的应用时,运行prog发现有错:
解决方法:原来是程序里多打了一个“)”,所以程序无法进行编译,改正程序以后就可以运行了:
问题2:运行实验楼的程序出现下面的错误:
解决方法:
问题3:运行main:时发现div.c的结果和预期不符:
解决方法:暂时不知道是什么问题,看了一下div.c 的程序代码是正确的,所以应该不是代码的问题,这个问题仍然在解决中………………
补充:除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
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)
除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?(4分)
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
代码托管中的问题和解决过程
问题1:公钥生成以后打开http://git.oschina.net/profile
网页,标题栏不能为空:
解决过程1:标题栏可以随意输入。
问题2:连接失败:
解决方法2:参考了这两个博客20145212罗天晨和20145215卢肖明:
问题3:代码推送失败:
解决过程3:
本周代码托管截图代码托管连接
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4000行 | 20篇 | 400小时 | |
第0周 | 0/0 | 1/1 | 5/5 | |
第1周 | 0/0 | 1/2 | 10/15 | |
第2周 | 300/300 | 1/3 | 15/30 |