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

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

教材学习内容总结

- gcc编译:

预处理:gcc -E hello.c -o hello.i

编译:gcc -S hello.i -o hello.s

汇编:gcc -c hello.s -o hello.o

链接:gcc hello.o -o hello

- gdb调试:

编译生成可执行文件:gcc -g hello.c -o hello

进入gdb调试界面:gdb test

部分常用指令:

查看代码(默认10行):list

设置行断点:break 5
(停在第5行)

设置条件断点:break 5 if n=6
(如果n的值为6,则程序运行到第5行停止)

执行下一行:next

继续运行:continue

帮助信息:help

开始运行程序:run

清除断点:clear

退出:quit

参考:linux下如何使用gdb调试

- 静态库

生成.o文件:gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c

生成静态库:ar rcvs libmath.a add.o sub.o mul.o div.o

生成可执行文件main:gcc main.c -o main -I/头文件所在路径 -L. -lmath

- 动态库

生成.o文件:gcc -fPIC -c -I/头文件所在路径 add.c sub.c mul.c div.c

生成动态库:gcc -shared -o mymath.so add.o sub.o mul.o div.o

将文件libmath.so复制到目录/lib中

生成可执行文件main:gcc main.c -o main -I/头文件所在路径 -L.lmath

- Makefile

创建:vim Makefile

- 教材学习中的问题和解决过程

  • 问题1:a.out是什么?有什么含义嘛?

  • 问题1解决方案:a.out 是linux/unix环境下gcc编译源代码(c/c++)并连接产生的默认执行文件名。a.out是由OMAGIC, NMAGIC, QMAGIC, 或者 ZMAGIC发展过来的一种可执行文件格式。一个典型的a.out文件由一下7部分组成:exec header:文件头、text segment:代码段、data segment:数据段、text relocations:代码重定向
    、data relocations:数据重定向、symbol table:符号表、string table:字符串表。

- 代码调试中的问题和解决过程

  • 问题1:编译main.c时报错

  • 问题1解决方案:要编译包括各个函数在内的所有.c文件,*.c

  • 问题2:链接时不成功,报错。

  • 问题2解决方案:要将包括4个函数在内的所有.o文件都放到bin文件夹中才可以。

  • 问题3:运行Makefile时报错。

  • 问题3解决方案:书写Makefile时要用Tab空行后再书写命令。

感悟

这周的学习困难不少,收获也是挺大的。知道了一些在Linux下c语言文件处理的操作,以及一些相关知识。新的学期新的挑战,继续加油,努力学习。

posted @ 2018-09-23 19:18  brs666  阅读(166)  评论(0编辑  收藏  举报