20145237 《信息安全系统设计基础》第2周学习总结
20145237 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
vi的基本操作
·最基本文本编辑
1.光标移动:h:光标左移;j:光标下移;k:光标上移;l:光标右移。
2.字符编辑:将光标移动到需要修改的字符位置,x键:删除该字符;i键:在光标前添加某字符。
3.文本编辑:无论光标放在哪里,。A键:都会在末尾连续添加字符
4.退出:输入,q!:放弃所有改动;wq:保存改动。
5.删除类命令:dw:当前光标处到下一个单词开始处删除。de:当前光标到单词结束。d$:当前光标到行末。
gcc编译器的基本原理
gcc 编译流程解析:预处理、编译、汇编、链接
Linux的可执行文件并没有像 Windows 那样有明显的.exe后缀名, 只需向其分配x(可执行)权限即可 sudo chmod u+x excutefile
gcc的-E参数可以让gcc在预处理结束后停止编译过程
gcc预处理源文件的时候(第一步),不会进行语法错误的检查。语法检查会在第二步进行,比如花括号不匹配、行末尾没有分号、关键字错误等
1)预处理阶段:在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef 等)进行处理。在上述代码的预处理过 程中,编译器将包含的头文件 stdio.h 编译进来,并且用户可以使用 gcc 的选项“-E”进行查看,该选项的 作用是让 gcc 在预处理结束后停止编译过程。
gcc –E hello.c –o hello.i
选项“-o”是指目标文件,“.i”文件为已经过处理的 C 程序。
(gcc 指令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件] 其中,目标文件可缺省,gcc 默认生成可执行的文件,名为:编译文件.out)
2)编译阶段:接下来进行的是编译阶段,在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看, 该选项只进行编译而不进行汇编,结果生成汇编代码。
3)汇编阶段:汇编阶段是把编译阶段生成的“.s”文件转成目标文件,读者在此使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了。
函数库有静态库和动态库两种。静态库是指编译链接时,将库文件的代码全部加入可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后名通常为“.a”。动态库与之相反,在编译链接时并没有将库文件的代码加入可执行文件中,而是在程序执行时加载库,这样可以节省系统的开销。一般动态库的后名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。 完成了链接之后,gcc 就可以生成可执行文件。
代码调试中的问题和解决过程
在编写实验楼中的程序时,我把head.h写成了head.c导致之后运行时失败,我又重建了head.h文件,程序就能成功运行了
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 20/20 | |
第二周 | 100/500 | 1/3 | 18/38 |