zoukankan      html  css  js  c++  java
  • 信息安全系统设计基础第二周学习总结

        信息安全系统设计基础第二周学习总结

    【学习思路:浏览实验楼实验内容并进行针对性学习,重点学习《嵌入式linux系统应用程序开发标准》中的内容。完成学习任务,认真提出问题。】

    学习时间:13小时

    学习收获:学习vim语法和命令;掌握gcc,gdb,makefile的使用方法和基本语法;掌握静态库,动态库的创建方法

    一、实验楼实验(vim使用介绍)

    1.知识点:

       1)man  -k <命令> 用于学习命令。  

      2)在vim中,:q!会舍弃所做的任何改动;按下A以启用编辑,按下esc退出;光标放在欲删除的单词处,按下dw可以删除单词;输入d$,删除从当前光标到文末;w,表示向前移动几个单词(不含该单词),而e表示移动到前面第几个单词(含本词);数字+dd,删除几行;按下p将最后一次删除的内容插入到光标所在位置的上方;输入r和一个字符,替换光标所在位置的字符;输入cw或者ce之后,可以改变单词直到单词末尾(ce是把光标所在的位置上的单词也删除);c$可以删除到行末;Ctrl +g可以查询当前行,用G跳到文末或者gg跳到文首之后,输入行号+G就可以返回;/后输入字符即可查找,按下n进行下一次查找;光标放在某{,(,[处,按下%可以查找配对的另一半;:s/old/new/g可以将整行中的单词进行替换;:%s/old/new/g可以将整个文档中的单词进行替换;:!知乎可以输入外部命令,即在vim中执行外部命令;按下v后,就可以选中部分文本了;:r FILENAME就可将文本内容粘贴到光标上方;输入大写的O,将在光标上方打开一行并进入插入模式,输入小写的o,将在光标下方打开一行并进入插入模式;输入a可在光标之后插入;按下R后,就可以连续替换多个字符;按下v后,可以在高光状态下选中文本,然后按下y复制,按下p粘贴;也可以直接在正常状态下按yw选中一个单词;在:set hls is之后,输入/单词 可以显示出文件中所有的待查找单词;:set ic之后,则不区分查找的大小写;按下tab键可以补全文件名。

       3)大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page。

    2.问题:

       1)ctrl+R是刷新?并没有撤销撤销掉的命令。   

    (图1)  

    2)按照提示按下ctrl+d,并没有出现列表,而是出现收藏夹选项?(之前已经输入过 set nocp)   

    (图2)

    二、实验楼实验(gcc,gdb,makefile使用介绍)

    1.知识点:

       1)gcc编译文件的流程:源文件—预处理—编译—汇编—链接—可执行文件  

      2)在.c->.i的时候不会进行语法检查,在.i->.o的时候才会进行  

      3)使用gdb进行调试:gcc –g XXX.c –o XXX后,输入 gdb XXX 即可进行调试; l——查看源代码;break 行数——设置断点;info break——查看断点信息;p 变量——打印变量值;bt——查看堆栈;c——继续执行;q——退出;n——不进入函数调试;s——进入函数调试;help [command]可以进行命令查找;delete [断点号]——删除所有断点;b 函数名——设置函数断点(函数不执行);b 行号或者函数 if 表达式 (条件断点)  

      4)makefile带来的好处就是——“自动化编译”,一但写好,只需要一个make命令,整个工程完全编译,极大的提高了软件的开发效率。  

      5)一个Makefile文件主要含有一系列的规则,每条规则包含一下内容:一个目标,即make最终需要创建的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如‘clean’;一个或多个依赖文件的列表,通常是编译目标文件所需要的其他文件。之后的一系列命令,是make执行的动作,通常是把指定的相关文件编译成目标文件的编译命令,每个命令占一行,并以tab开头(初学者务必注意:是tab,而不是空格) 执行以上Makefile后就会自动化编译  

      6)-C dir 读入指定目录下的makefile

    2.操作  

      1)使用gcc进行编译   

    (图3)

        2)使用gcc进行模块化编译   

    (图4)  

    3)使用gdb   

    (图5)  

    (下方截图表明,设置断点不恰当,可能会导致程序无法单步执行)  

     (图6)

       4)使用Makefile

     (下方为正常编译的结果)  

     

    (图7)  

    (下方为最初的输入,后将pro.p改正为prog.o)   

    (图8)

     (上方为操作)  

     (图9)

    3.问题:

       1)(已经解决)已经编辑保存了hello.c文件,为什么显示“找不到”?阅读不仔细,输入应为 gcc hello.c –o hello   

    (图10)   

    (图11)  

    2)这里对gcc hello_print.c hello_main.c –o hello的解释中,最后一个命令的意思是什么?(猜测:是否是将这两个.o文件转换为一个可执行的,名称为hello的文件?)   

    (图12)  

     (图13)

    三、学习《嵌入式linux系统应用程序开发标准》

       1)vim有三种模式:命令行模式,底行模式,插入模式  

      2)预处理阶段——对头文件和宏进行处理。以gcc -E hello.c -o hello.i  为例,-E是是让gcc在预处理结束后停止编译;-o表示输出文件。  编译阶段——检查无误后,转换成汇编语言。  汇编阶段——把上一阶段的.s转换成目标文件  链接阶段-把函数的实现都放到函数库中。

       3)-I dir 在头文件的搜索目录中加入dir。加上<>后,是在标准路径/user/include目录中搜索,加上“”是在本目录中搜索。

       4)创建静态库  gcc -c 目标文件(.c)——>ar rcsv libname.a 目标文件.o  (编译主程序)gcc -o 主程序名 主程序名.c -L lname  5)创建动态库  gcc -fPIC -Wall -c 目标文件.c——> gcc -shared -o libname.so 目标文件.o  编译主程序的命令同上  此外,还要注册动态路径 cp libname.so /lib

    四、作业

    1.作业  

      1)编写程序,并用gcc编译  

      (图14)

       2)利用gdb调试  

     (图15)    

     

    查看源代码,设置断点    

    (图16)   

      让程序运行    

    (图17)  

    3)创建静态库

      

    (图18)  

    4)动态库创建   

    (图19)

     5)编写makefile   

    (图20)

    2.问题:

       1)输入数字(如 5,3之后无任何输出且无法退出?)  

    (图17)

     源程序如下:

     int main(void)  {   

    printf("add:%d ",add(a,b));   

    printf("sub:%d ",sub(a,b));   

    printf("mul:%d ",mul(a,b));  

     printf("div:%lf ",div(a,b));  

     return 0;

     }  

      2)静态库、动态库无法使用?与makefile出现的问题基本一致。“未定义”意味着什么?

     

    (图21)  

    (图22)

     (图23)   

         

     

  • 相关阅读:
    0034 CSS精灵技术:sprite(重点)
    0033 溢出的文字省略号显示:white-space、overflow、text-overflow
    0032 垂直对齐:vertical-align(图片、表单和文字对齐,去除图片底侧空白缝隙)
    0031 CSS用户界面样式:鼠标样式cursor、轮廓线 outline、防止拖拽文本域resize
    0030 元素的显示与隐藏:dispaly、visibility、overflow
    0029 css定位:相对、绝对、固定、绝对定位盒子居中、z-index、绝对定位改变display属性、案例
    0027 chrome调试工具
    0026 页面布局流程
    0025 CSS属性书写顺序
    0024 Photoshop 切图
  • 原文地址:https://www.cnblogs.com/lwr-/p/4841911.html
Copyright © 2011-2022 走看看