20155336 2017-2018 1 《信息安全系统设计基础》2017-9-27课堂实践
第一题:vi
- 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
- 用Vi输入图中代码,并用gcc编译通过
- 在Vi中使用K查找printf的帮助文档
- 提交vi编辑过程截图,要全屏,包含自己的学号信息
说起来很惭愧,第一次接触虚拟机,对很多地方都陌生,正好趁学习这门课程掌握一下虚拟机的基本操作。 首先创建一个文件夹,命名为text1。然后将第一道题的要求都录入进去。录入完毕后,输入`gcc *.c`, 发现了错误,然后`vi`进入到.c的文件中,修改了错误再次编译一遍,没有错误,然后就输出`./a.out`
第二题:gcc测试
- 用gcc 进行预处理,编译,汇编,链接vi输入的代码
- 生成的可执行文件中要有自己的学号
- 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
第二题,按照第一节课课上记得笔记,在课下自己实践。虽然中间粗心代码出现错误,但是问题不大
第三题:gdb测试
- 用gcc -g编译vi输入的代码
- 在main函数中设置一个行断点
- 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
- 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
这道题出现了很多问题,首先下载GDB,然后在设置了条件断点之后,程序调试的时候没有在断点处停下。在空循环中加个打印空行再设置条件断点然后运行就可以了。(中间由于很多次自己都忘记了编译~~~~~导致每次都会显示自己定义的n没有定义。)
第四题:静态库测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
这道题将自己的代码编译为以下形式: gcc -c add.c -o add.o gcc -c sub.c -o sub.o gcc -c mul.c -o mul.o gcc -c div.c -o div.o 然后使用ar创建一个存档文件:ar rcs mymath.a add.o sub.o mul.o div.o 编译的时候再将程序和mymath.a链接起来:gcc -static -o link1 main.o mymath.a 接着运行就可以了!
第五题:共享库
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
- 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
创建一个共享文件 gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c 创建一个可执行的目标文件 gcc -o link2 main.c ./mymath.so 运行即可
Myod:
1 复习c文件处理内容
2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
- main与其他分开,制作静态库和动态库
- 编写Makefile
5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己
时间: 2024-12-10 15:59:56