2018-2019-1 20165203 《信息安全系统设计基础》第一周学习总结
教材学习内容总结
- 编译:
gcc [选项] [文件名]
选项参数表
参数 | 对应功能 |
---|---|
-E | 仅执行编译预处理 |
-S | 将.c代码转换为汇编语言代码 |
-c | 仅执行编译操作,不进行连接操作 |
-o | 指定生成的输出文件 |
-I (大写) | 指定头文件目录 |
-l | 指定程序要连接的库 |
-L | 指定库文件所在的目录名 |
注意:-I
:我们平时在使用时,-I
要紧跟头文件所在的地址目录: gcc -E/-S/-c/-o -I 头文件所在目录 src/ *.c bin/ *
- 编译过程:
1.预处理:.c文件变成.i文件
gcc -E -I 头文件所在目录 src/ *.c -o bin/ *.i
2.编译:.i文件变成.s文件(汇编程序)
gcc -S -I 头文件所在目录 src/ *.i -o bin/ *.s
3.汇编:.s文件变成.o文件
gcc -c -I 头文件所在目录 src/ *.s -o bin/ *.o
4.链接:.o文件变成可执行文件
gcc *.o -o 文件名
也可直接输入gcc *.c -o *
直接编译成可执行文件
-多模块一起编译:
gcc test_a.c test_b.c -o test 或 gcc *.c –o test
也可分开编译
第一种方法编译时需要所有文件重新编译;
第二种只重新编译修改的文件,未修改的不用重新编译。
- 项目目录结构
文件夹名 | 对应文件 |
---|---|
src | 存放.c文件 |
include | 存放.h文件也就是头文件 |
bin | 存放项目调试之后的可运行文件 |
libs | 存放动态库和静态库文件 |
Readme.md | 阅读指南文件,包括如何使用这个程序等 |
makefile | 描述了整个工程的编译、链接等功能,“自动化” |
- 静态库
步骤:
1、输入gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c
生成.o文件
2、输入ar rcvs libmath.a add.o sub.o mul.o div.o
生成静态库
3、输入gcc main.c -o main -I/头文件所在路径 -L. –lmath
生成可执行文件main
注意:-l参数用来指定程序要链接的库,-l参数紧接着就是库名。
-L参数跟着的是库文件所在的目录名。
gcc会在静态库名前加上前缀lib,然后追加扩展名.a得到的静态库文件名来查找静态库文件。
- 动态库
步骤:
1、输入gcc -fPIC -c -I/头文件所在路径 add.c sub.c mul.c div.c
生成.o文件
2、输入gcc -shared -o libmath.so add.o sub.o mul.o div.o
生成动态库
3、将文件libmath.so
复制到目录/usr/lib
中后,再输入gcc main.c -o main -I/头文件所在路径 -L. lmath
生成可执行文件main
代码调试中的问题和解决过程
Q:自己的虚拟机vim编辑器中Backspace键及方向键无法使用
A:自己查找得知,自己安装的编辑器版本不是最新版本,输入sudo apt-get remove vim-common
sudo apt-get install vim
以安装最新的vim编辑器
代码托管
其他(感悟、思考等,可选)
本周是第一周学习,俗话说良好的开端是成功的一半,自己根据娄老师的实验一步一步来,巩固了本周的学习,理论和实践相结合,可以更有利于知识的融会贯通。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 |