2018-2019 20165203 《信息安全系统设计基础》第一周学习总结

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

参考资料

猜你喜欢

转载自www.cnblogs.com/20165203-xyx/p/9728474.html