zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165226 《信息安全系统设计基础》第1周学习总结

    2018-2019-1 20165226 《信息安全系统设计基础》第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 test_a.c test_b.c -o test或者gcc *.c -o test
    分别编译各个源文件,之后对编译后输出的目标文件链接

    3.-I参数

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

    二、 GDB命令行界面使用技巧

    • 条件断点
      • 设置断点:b 5(如果要在第五行断点)
      • 条件断点:b 5 if i=5
    • 命令补全:TAB
    • 部分gdb常用命令:
    命令 简写形式 说明
    list l 查看源码
    backtrace bt、where 打印函数栈信息
    next n 执行下一行
    step s 一次执行一行,遇到函数会进入
    finish 运行到函数结束
    continue c 继续运行
    break b 设置断点
    info breakpoints 显示断点信息
    delete d 删除断点
    print p 打印表达式的值
    run r 启动程序
    until u 执行到指定行
    info i 显示信息
    help h 帮助信息
    • 执行shell命令

    在gdb命令行界面可以执行外部的shell命令:
    (gdb) !shell命令

    三、静态库与动态库

    静态库

    生成:

    ①生成四个.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

    注意!!如果执行文件发生错误,则返回上一级查看文件libmath.a或者mymath.so是否在lib里,若不是则通过mv 语句将文件移到lib

    四、Makefile

    • 创建:vi makefile

    • 书写:

    targets : prerequisites
      command
     或者
    targets : prerequisites ; command
      command
    、、、
    

    目录

    代码学习中的问题和解决过程

    ****
    • 问题1:

    没有定义printf,无法编译

    • 问题1解决方案:

    通过vi编辑main.c程序,在前面加入'#include<stdio.h>'即可

    • 问题2:

    invalid of voidexpression

    • 问题2解决方案:

    通过vi编辑main.c程序,在前面加入#include'head.h' 即可

    • 问题3:

    程序报错main.c中无head.h文件

    • 问题3解决方案:

    返回上一级目录,再输入命令行gcc src/main.c -o src/main lib/libmath.a -I include ,从而生成可执行文件main

    • 问题4:

    makefile:3: *** missing separator.

    • 问题4解决方案:

    在make命令后出现这种错误提示,是提示第2行没有分隔符。
    例如:
    1 target:prerequisites

    2 command

    ……
    改为:
    1 target:prerequisites

    2    command

    ……

    就可以了。

    在Makefile文件中,命令必须以【tab】键开始。

    • 问题5:

    make: *** No rule to make target 'head.h', needed by 'main.o'。

    • 问题5解决方案:

    head.h文件移动到src中即可,其实还尝试了在makefile中添加CFALGS来说明head.h路径,但是仍然报错,后来搜到出错的还可能是多余的空格导致的,于是逐行排查,结果发现仍然有问题,最后选择了移动head.h文件。

    目录

    教材每章提问

    **** - 问题1:第一章中漫游在计算机系统中如何体现的? - 问题2:计算机的算术运算中如何避免算术溢出,或者如何看待并解决的? - 问题3:什么是缓冲区溢出,如何通过程序在编译器和操作系统的帮助下减轻的? - 问题4:HCL有哪些命令书写要求? - 问题5:c代码如何变换以提升哪些性能? - 问题6:存储层次结构有哪些优势与劣势? - 问题7:如何实现静态库与动态库的生成与调用? - 问题8:异常控制流是如何产生的?异常发生时如何控制? - 问题9:虚拟内存与硬件内存的不同之处? - 问题10:Unix I/O 与Linux I/O 的优势与局限性? - 问题11:如何使用编写实现一个简单Web服务器?需要什么结构? - 问题12:什么是可重入、死锁?线程级编程的具体实现方法?

    目录

    代码

    **** [代码托管](https://gitee.com/Sean-Lxs/5226lxs.git) ![](https://img2018.cnblogs.com/blog/1047870/201809/1047870-20180923140406752-164564837.png)

    目录

    其他

    **** 新学期,希望自己能多下功夫,做到学以致用。通过这几次测试对C文件处理内容的相关知识有了进一步的认识与掌握,以后再接再励,学到更多知识。

    目录

    学习进度条

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

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:5小时

    • 实际学习时间:10小时

    • 改进情况:

    有空多看看现代软件工程 课件
    软件工程师能力自我评价表

    目录

    参考资料

    **** - [《深入理解计算机系统V3》学习指导]([http://www.cnblogs.com/rocedu/p/5826467.html])

    目录

  • 相关阅读:
    线程高级应用-心得2-同步锁讲解及面试题案例分析
    线程高级应用-心得1-传统线程和定时器讲解及案例分析
    Map拷贝 关于对象深拷贝 浅拷贝的问题
    HashMap对象的深层克隆
    java Collections.sort()实现List排序自定义方法
    java中观察者模式Observable和Observer
    mysql字符串函数(转载)
    CSS的三种样式表和优先级
    Android之微信支付
    Android之扫描二维码和根据输入信息生成名片二维码
  • 原文地址:https://www.cnblogs.com/musea/p/9684695.html
Copyright © 2011-2022 走看看