20145233 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
Linux下的C语言编程基础
实验目的
- 熟悉Linux系统下的开发环境
- 熟悉vi的基本操作
- 熟悉gcc编译器的基本原理
- 熟练使用gcc编译器的常用选项
- 熟练使用gdb调试技术
- 熟悉makefile基本原理及语法规范
实验步骤
vim
VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM
VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练,这跟五笔打字很类似。我们建议通过实践练习来学习具体来说通过VIMTUTOR或玩游戏(Vim大冒险或PacVim)来学习。
VIMTUTOR是个实践教程,通过实践30分钟让你对VIM编辑器入门,只要在命令行中输入vimtutor,然后跟着教程练习就可以了。
gcc
GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。
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
gdb
实验楼中建议使用CGDB,比GDB好用,熟悉VC的调试方式,可以使用DDD。 注意使用GCC编译时要加“-g”参数。
GDB最基本的命令有:
- gdb programm(启动GDB)
- b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
- run 开始运行程序
- bt 打印函数调用堆栈
- p 查看变量值
- c 从当前断点继续运行到下一个断点
- n 单步运行
- s 单步运行
- quit 退出GDB
make和makefile
实验楼老师给的资料并没有关于这方面的,所以我在网上查找了有关的知识点:
-
make:
make:是一个非常重要的编译命令,本质上它是一个程序。利用make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。 -
makefile
Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作,本质上makefile文件是个文本文件,用于配置编译过程。makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。
教材学习中的问题和解决过程
vim的使用
其中有一些简单的操作,这里我就只截了几张图:
其中vim的使用在Linux中很广泛还是要多多练习。
并且在命令行下输入完代码,还需要利用gcc编译:
代码调试中的问题和解决过程
本次git是在Linux环境下上传的,其实相比上学期来说,跟在idea中是相似的,都是先在开源中国代码托管中建立一个新的项目,并且要将自己公钥地址上传到网上:
这个时候可以检查一下自己的链接是否和网上的git链接到了一起。
接下来就可以在生成的文件夹下输入代码了,当然可以在命令行下输入,在下面的代码都是我在命令行下利用touch生成的。
本周代码托管截图
本周的个人思考问题
我想问的是所有C语言代码在Linux环境下都和在windows环境下是一样的吗?是否还是要输入一些特定的命令才可以执行?
其他(感悟、思考等,可选)
这周的学习任务比上周要多一些,因为这周开始正式使用Linux里面的各种命令来写C语言的代码,其中在命令行中之后是vim的环境,所以在老师的实验楼实习里面我练了一些时间才可以在输入代码时随意的增加或者删除。但还是不是很熟练这还需要我大量的来练习才可以很好地使用vim的命令。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 24篇 | 350小时 | |
第一周 | 0/0行 | 1/2 | 20小时 | |
第二周 | 53/53行 | 1/3 | 25/45小时 |