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

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


教材内容总结

 GCC编译

1.单文件

  • 预处理: 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 
  • 或者直接用ESC.iso

2.多模块

一起编译: gcc testa.c testb.c -o test 或者 gcc *.c -o test  分别编译各个源文件,之后对编译后输出的目标文件链接

3.-I参数

.h文件放在include中,.c文件放入src中 用于指明头文件路径*

GDB命令行界面使用技巧

  • 条件断点
  • 设置断点:b 5(如果要在第五行断点)
  • 条件断点:b 5 if i=5
  • 命令补全:TAB
  • 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 
  • 调用:先后使用 gcc main.c -o main -I/头文件所在路径 -L. -lmath 和 ./main 来生成main文件并调用静态库执行文件

动态库 生成:

  • 生成四个文件: 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 
  • 调用: gcc -I/头文件所在路径 -o main main.c -L. -lmath 

MakeFile

  • 创建:

    •  vi makefile 
  • 书写:

    • targets :  prerequisites 
    • 或者targets :  prerequisites  ;  command 

学习过程中遇到的问题


  • 问题1:fatal error:找不到head.h

    • 解决方案:在上级目录中输入 gcc src/main.c -o src/main lib/libmath.a -I include 生成main文件
  • 问题2:对于计算机运行代码的原理仍存在不理解,不熟悉

    • 解决方案:记主ESC、ISO,

      • 预处理:gcc -E hello.c -o hello.i
      • 编译:gcc -S hello.i -o hello.s
      • 汇编:gcc -c hello.s -o hello.o

      并多动手测试,不局限于课程中的案例。


学习进度条

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时  
第一周 115/115 1/1 5/5  


    

猜你喜欢

转载自www.cnblogs.com/FenixRen/p/9693576.html