20145331 《信息安全系统设计基础》第2周学习总结
2016-09-25 18:25
381 查看
20145331 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
一、vim及相关命令
1、vim就是一个文本编辑器,他有很多功能让你编辑文本更加方便。2、vim命令:
注:保存命令w是内部命令不用感叹号。(:w xxx)
补:大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page。
二、gcc、静态库,动态库
1、gcc就是一个编译系统,又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。2、程序被其他程序翻译成不同形式(如下图):
3、编译过程分四步:
预处理: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
4、静态库:编译系统提供一种机制,将所有相关目标模块打包成为一个单独的文件,文件名.a标识。可以做链接器的输入。缺点:a要定期维护更新b、对存储器系统资源造成极大浪费。所以又搞了一个动态库来解决这些问题。
5、动态链接共享库:一个目标模块运行时可以加载到任意存储器的地址上,并和一个存储器上的程序链接起来,整个过程由动态链接器执行。用.so标识。
6、静态库:
创建:ar rcsv libxxx.a xxx.o 使用:gcc -o main main.c ./libxxx.a
7、动态库:
创建:gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o 使用: gcc -o main main2.c ./libxxx.so
三、gdb
1、gdb就是一个调试程序的工具。格式:gcc-g(可让被调试的程序在你所指定的调置的断点处停住,然后你就可以检查程序了)。2、-g参数调用编辑程序会得到.debug .line。
3、基本命令:
gdb programm(启动GDB) 设断点(行断点:break 行号、函数断点:break 函数名、条件断点、临时断点)多个源文件加上文件名。 run 开始运行程序 bt 打印函数调用堆栈 p 查看变量值 c 从当前断点继续运行到下一个断点 n 单步运行 s 单步运行 quit 退display 跟踪变量值的改变 until 跳出循环 finish 跳出函数 help 帮助出GDB
四、Makefile
1、源文件较多时用此工具会非常方便。2、格式:
目标文件:依赖文件列表 (tab)gcc命令
3、Makefile还可以定义和使用宏(也称做变量),从而使其更加自动化:
定义:macroname=macortext 使用:$(macorname)
五、链接器及相关概念
1、链接器两个主要任务:a、符号解析b、重定位2、目标文件三种形式:a、可重新定位目标文件b、可执行目标文件c、共享目标文件(动态库)
3、--------文件格式:a.out COFF PE ELF(ELF头、.text .......)
4、处理目标文件工具
AR:创建静态库,插入删除列出其成员 READELF:显示目标文件完整结构 LDD:列出可执行文件运行所需要的共享库 ......
5、处理多重定义符号的规则:
不能有多个强符号 一强多弱选一强 多个弱符号任意选择
六、课本内容
1、信息就是位加上下文。 查看源文件:ob-tc-tx1 xxx.c。2、系统硬件组成:总线、I/O设备、主存、处理器(加载、存储、操作、跳转/ALU计算新的数据和地址,操作中要用到)
3、存储结构层次主要思想:一层上的存储器是低一层存储器的高速缓存。
4、寄存器文件在存储结构最顶部(最小最快)
5、操作系统通过抽象概念来控制硬件: 文件=I/O设备 虚拟存储器=主存+I/O 进程=处理器+主存+I/O
教材代码学习中的问题和解决过程
调用静态库共享库时下面代码看不明白:gcc -static -o p2 main2.c ./xxxxx.a
还有这个:
gcc -o p2 main.c ./xxx.so
静态库创建的时候加入的文件不是.o格式的么怎么就能和.c格式的文件(main.c)直接一块用啊,文本代码和二进制代码都能直接一块用了么?
共享库里.so文件的用法是引用该库的可执行目标文件共享这个.so代码和数据,为啥代码中还是main.c,他不是可执行目标文件的格式啊?
课后作业中的问题和解决过程
1、使用gcc编辑器的常用选项(以hello.c为例):2、熟练使用gdb调试技术:
3、熟悉makefile基本原理及语法规范:
本周代码托管截图
https://git.oschina.net/20145331/java-besti-is-2015-2016-2-20145331.git其他(感悟、思考等,可选)
知识概念挺好懂的,书上代码有些看不明白,问题全写在上面了;要学的太多了以后少点吧;博客基本纯手敲能加分不;传说中的“做中学”确实能记住命令给个好评,真的敲着敲着就记住了。下周能少做点不祖国母亲过节呢,这不得放松一下?学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第二周 | 50/70 | 1/3 | 35/80 | 学习了vim、gcc、gdb、makefile、动态库静态库 |
参考资料
]《深入理解计算机系统V2》学习指导...
相关文章推荐
- # 20145217《信息安全系统设计基础》第2周学习总结
- 20145322何志威 《信息安全系统设计基础》第2周学习总结
- 20145301 《信息安全系统设计基础》第2周学习总结
- 20145331《信息安全系统设计基础》第六周学习总结
- 20145331 《信息安全系统设计基础》第5周学习总结
- 20155326 2017-2018-1 《信息安全系统设计基础》第2周学习及课堂总结myod
- 2017-2018-1 20155328 《信息安全系统设计基础》第2周学习总结
- 20145223《信息安全系统设计基础》第2周学习总结
- 20145205 《信息安全系统设计基础》第2周学习总结
- 20145331 《信息安全系统设计基础》第1周学习总结
- 20145229《信息安全系统设计基础》第2周学习总结
- 20145204《信息安全系统设计基础》第2周学习总结
- 20145237 《信息安全系统设计基础》第2周学习总结
- 20145236《信息安全系统设计基础》第2周学习总结
- 20145320 《信息安全系统设计基础》第2周学习总结
- 2017-2018-1 20155226《信息安全系统设计基础》第2周学习总结
- 20145214 《信息安全系统设计基础》第2周学习总结
- 20145201 《信息安全系统设计基础》第2周学习总结
- 20145212 《信息安全系统设计基础》第2周学习总结
- 20145331 《信息安全系统设计基础》第7周学习总结