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

    20145233 《信息安全系统设计基础》第2周学习总结

    教材学习内容总结

    Linux下的C语言编程基础

    实验目的

    • 熟悉Linux系统下的开发环境
    • 熟悉vi的基本操作
    • 熟悉gcc编译器的基本原理
    • 熟练使用gcc编译器的常用选项
    • 熟练使用gdb调试技术
    • 熟悉makefile基本原理及语法规范

    实验步骤

    vim

    VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM
    VI来说,一开始就需要相当大的技能,但一旦掌握这些技能,则你将会越来越熟练,这跟五笔打字很类似。我们建议通过实践练习来学习具体来说通过VIMTUTOR或玩游戏(Vim大冒险或PacVim)来学习。
    VIMTUTOR是个实践教程,通过实践30分钟让你对VIM编辑器入门,只要在命令行中输入vimtutor,然后跟着教程练习就可以了。

    gcc

    GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。
    GCC编译代码的过程如下:

    我们可以把编译过程分为四步,以实验楼上的为例子:

    • 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
    • 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl
    • 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as
    • 链 接:gcc hello.o –o hello ;gcc -o 调用ld

    gdb

    实验楼中建议使用CGDB,比GDB好用,熟悉VC的调试方式,可以使用DDD。 注意使用GCC编译时要加“-g”参数。
    GDB最基本的命令有:

    • gdb programm(启动GDB)
    • b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    • run 开始运行程序
    • bt 打印函数调用堆栈
    • p 查看变量值
    • c 从当前断点继续运行到下一个断点
    • n 单步运行
    • s 单步运行
    • quit 退出GDB

    make和makefile

    实验楼老师给的资料并没有关于这方面的,所以我在网上查找了有关的知识点:

    • make:
      make:是一个非常重要的编译命令,本质上它是一个程序。利用make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。

    • makefile
      Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作,本质上makefile文件是个文本文件,用于配置编译过程。makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。

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

    vim的使用

    其中有一些简单的操作,这里我就只截了几张图:

    其中vim的使用在Linux中很广泛还是要多多练习。
    并且在命令行下输入完代码,还需要利用gcc编译:

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

    本次git是在Linux环境下上传的,其实相比上学期来说,跟在idea中是相似的,都是先在开源中国代码托管中建立一个新的项目,并且要将自己公钥地址上传到网上:

    这个时候可以检查一下自己的链接是否和网上的git链接到了一起。
    接下来就可以在生成的文件夹下输入代码了,当然可以在命令行下输入,在下面的代码都是我在命令行下利用touch生成的。

    本周代码托管截图

    本周的个人思考问题

    我想问的是所有C语言代码在Linux环境下都和在windows环境下是一样的吗?是否还是要输入一些特定的命令才可以执行?

    其他(感悟、思考等,可选)

    这周的学习任务比上周要多一些,因为这周开始正式使用Linux里面的各种命令来写C语言的代码,其中在命令行中之后是vim的环境,所以在老师的实验楼实习里面我练了一些时间才可以在输入代码时随意的增加或者删除。但还是不是很熟练这还需要我大量的来练习才可以很好地使用vim的命令。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 24篇 350小时
    第一周 0/0行 1/2 20小时
    第二周 53/53行 1/3 25/45小时

    注释

    -深入理解计算机系统,实验楼
    -Linux基础入门
    -Ubuntu下的git使用

  • 相关阅读:
    calendar的用法
    为什么要初始化变量呢
    什么情况下,if()后面的else可以省略不写
    new 对象的时候,括号里有值和无值的区别
    if...else...;if..else if...else
    java-csv导出-导出文件显示的日期格式不正确
    使用Navicat连接MySQL,连接失败(报1064错误)
    MySQL下载安装详解(win10)
    Syntax error, parameterized types are only available if source level is 1.5 or greater
    eclipse ant出错问题
  • 原文地址:https://www.cnblogs.com/hanhaochen/p/5906721.html
Copyright © 2011-2022 走看看