2018-2019-1 20165202《信息安全系统设计基础》第一周学习总结
教材学习内容总结
一、实验楼实验二总结
我想尝试下OS系统的使用,所以实验内容都是在终端上完成。
-
熟悉vim的操作
-
练习gcc编译运行代码
-
练习gdb调试代码
-
把计算代码制作成静态库math.a和一个共享库math.so
-
编写makefile,让代码编译。
二、教材学习提问
- 一个C文件是如何变成一个可执行程序的?
- 整数运算在计算机中的溢出是怎么回事?
- 如何把学习过的数据结构知识同硬件知识结合?
- 怎样理解粗浅ISA指令(集体系结构)?
- 想要做到优化程序性能,应该保持怎样的思维结构或简单的思维定式?
- 如何把程序的数据项存储在层次结构中较高的地方?
- 所谓的“库”是什么?如何使用?
- ECF异常控制流与异常的关系?
- 虚拟内存的作用?
- I/O分为哪两种,这两种有什么关系?
- 如何理解客户端服务器编程模型?
- 并发在计算机系统的各个层有哪些情况?
教材学习中的问题和解决过程
- 问题1:不会把几个c文件链接在一起。
- 问题1解决方案:翻阅《深入理解计算机系统》第七章 P465
gcc -Og -o prog main.c sum.c
但是我的电脑输入-Og
会提示错误,于是就删掉了-Og
,输入
> gcc -o prog main.c add.c sub.c mul.c div.c
> ./prog
代码调试中的问题和解决过程
- 问题1:如何生成静态库?
- 问题1解决方法:参考论坛中Linux系统下静态库和共享库(动态库)的制作与使用
函数库由*.o组成
> gcc -c add.c
> gcc -c sub.c
> gcc -c mul.c
> gcc -c div.c
创建静态库由ar
命令完成:
> ar -cr math.a add.o sub.o mul.o div.o
- 问题2:如何创建共享库(动态库)?
- 问题2解决方案:输入命令
> gcc -shared -fpic -o math.so add.c sub.c mul.c div.c
- 问题3:如何Makefile?
- 问题3解决方案:参考Linux makefile教程,创建Makefile文件
edit : main.o add.o sub.o mul.o div.o
cc -o edit main.o add.o sub.o mul.o div.o
main.o : main.c head.h
cc -c main.c
add.o : add.c head.h
cc -c add.c
sub.o : sub.c head.h
cc -c sub.c
mul.o : mul.c head.h
cc -c mul.c
div.o : div.c head.h
cc -c div.c
clean :
rm edit main.o add.o sub.o mul.o div.o
然后在命令行里
> make
会发现生成了可执行文件edit,
> ./edit
代码托管
结对及互评
本周结对学习情况
- 结对学习内容
创建静态库、动态库。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 10/10 |
-
计划学习时间:12小时
-
实际学习时间:10小时