2018-2019 20165203 《信息安全系统设计基础》第一周
一、实验内容及操作步骤
测试一
- 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
- 用Vi输入图中代码,并用gcc编译通过
- 在Vi中使用K查找printf的帮助文档
- 提交vi编辑过程截图,要全屏,包含自己的学号信息
把代码推送到代码托管平台
步骤:
- 输入命令
vi *.c
或vi *.h
,敲入代码即可,以下是输入完毕后的文件及文件夹目录:
,将光标移动到printf处,按大写的K,即可得到帮助文档,下面是帮助文档和运行图片
测试二
- 用
gcc
进行预处理,编译,汇编,链接vi输入的代码 - 生成的可执行文件中要有自己的学号
- 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
代码推送到代码托管平台
步骤:
-
输入预处理命令:
gcc -E -I include src/*.c -o bin/*.i
-
输入编译指令:
gcc -S -I include bin/ *.i -o bin/ *.s
-
输入汇编指令:
gcc -c -I include bin/ *.s -o bin/ *.o
-
输入链接指令:(在
bin
文件夹下运行)
cd bin
gcc * .o -o test
测试三
- 用gcc -g编译vi输入的代码
- 在main函数中设置一个行断点
- 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
- 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
操作步骤:
-
用
gcc -g
来使源代码生成一个可执行文件,用gdb+文件名
来进行调试,并设置断点为第9行。
-
输入
r
进行调试
-
设置相应断点及相应的值
测试四
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
操作步骤:
- 输入
gcc -g -c -I +相应位置下的文件
,来将.c文件变成.o文件 - 加上
static
参数生成mymath.a
静态库文件 - 输入
arv rcvs 静态库文件名 .o文件
,将.o文件放入静态库 - 加上-o,生成一个可执行文件
test
测试五
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
- 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
操作步骤:
- 加上
-shared -fpic
参数,生成共享库文件mymath.so
- 调试过程,同gdb调试
测试六
1.写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
2.提交Make过程截图,要全屏,包含自己的学号信息
操作步骤:
- 输入
vim Makefile
, 输入内容 - 在终端输入
make
- 运行生成的目标文件
二、遇到的问题
Q:自己的虚拟机vim编辑器中Backspace键及方向键无法使用
A:自己查找得知,自己安装的编辑器版本不是最新版本,输入sudo apt-get remove vim-common
sudo apt-get install vim
以安装最新的vim编辑器
三、实验体会
本次测试是第一次测试,有了大二下自学的经验,学起来还得心应手一些,当然这之中也少不了小伙伴们的帮助,自己也从中学到了很多东西,希望这学期好好努力,取得好成绩吧。