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

课堂笔记及学习笔记

1044876-20180923231702578-596676436.jpg

1044876-20180923231711617-1979953691.jpg

1044876-20180923231719036-1845626103.jpg

1044876-20180923231725042-948590309.jpg

1044876-20180923231731422-1777459667.jpg

1044876-20180923231737336-1941243466.jpg

测试练习

测试一

  • 用Vi输入图中代码,并用gcc编译
    • 通过在src目录下输入命令行gcc -I/头文件所在路径 *.c -o ../bin main完成编译。
      1044876-20180924000847155-443850427.png

1044876-20180924000853143-1842297832.png

  • 在Vi中使用K查找printf的帮助文档
    • 在文件夹中的终端输入vim main.c,再次敲击回车进入该函数的编辑界面。
    • 将光标移动到printf语句上,然后输入大写K显示帮助文档。
      1044876-20180924000926146-1779999657.png

测试二

  • 用gcc进行预处理,编译,汇编,链接vi输入的代码
    • 预处理: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
      1044876-20180924001201538-73146562.png

测试三

  • 1.用gcc -g编译vi输入的代码
    2.在main函数中设置一个行断点
    3.在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
    • 打开终端输入gcc -g *.c -o test生成一个可执行gdb文件test
    • 输入gdb test进入gdb调试模式,再输入l显示test文件内容。
    • 在test中写入一个for(i=0;i<5322;i++)的空循环用来检测断点。
    • 在gdb调试窗口输入b main在主函数第一行设置一个断点
    • 输入b 6 if i==2661即在第2661次循环处设置另一个断点。
    • 输入info break显示断点信息
    • 输入r运行程序,遇到断点会显示断点内容,因为该循环设置为空,所以循环处断点没有内容显示。
      1044876-20180924001313871-1894847349.png

1044876-20180924001340461-1859860637.png

测试四

  • 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?提交静态库生成和调用过程截图(一定包含条件断点的)
    • 输入gcc -c -I/头文件所在路径 add.c sub.c mul.c div.c生成.o文件
    • 输入ar rcvs libmymath.a add.o sub.o mul.o div.o生成静态库
    • 输入gcc main.c -o main -I/头文件所在路径 -L.-lmymath生成可执行文件main
      1044876-20180924001907251-168714871.png

测试五

  • 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
    • 输入gcc -fPIC -I/头文件所在路径 add.c sub.c mul.c div.c生成.o文件
    • 输入ar shared libmymath.so add.o sub.o mul.o div.o生成静态库
    • 输入gcc main.c -o main -I/头文件所在路径 -L.-lmymath生成可执行文件main
      1044876-20180924002041746-852605910.png

测试六

  • 写出编译上面vi编辑代码的makefile(注意gcc前用tab键填充),编译出来的目标文件为testmymath, 只用显式规则就可以
    • 新建文件makefile,编辑代码
    testmymath:main.o add.o sub.o mul.o div.o
      gcc main.o add.o sub.o mul.o div.o -o testmymath
    main.o:main.c head.h
      gcc -c main.c
    add.o:add.c head.h
      gcc -c add.c
    sub.o:sub.c head.h
      gcc -c sub.c
    mul.o:mul.c head.h
      gcc -c mul.c
    div.o:div.c head.h
      gcc -c div.c
    • 在命令行输入make生成目标文件testmymath
      1044876-20180924002116256-1366611094.png

学习中问题及解决

  • 问题1:
    1044876-20180924003846371-1990692707.png

  • 解决方法:在main.c中加入头文件引用#include'head.h'
  • 问题2:
    1044876-20180924003905816-528716479.png

  • 解决方法:将makefile放入src文件夹中,并在src路径中输入make

转载于:https://www.cnblogs.com/wangyaojia/p/9694158.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值