一、学习内容

1. 熟悉Linux系统下的开发环境   
2. 熟悉vi的基本操作   
3. 熟悉gcc编译器的基本原理   
4. 熟练使用gcc编译器的常用选项   
5 .熟练使用gdb调试技术   
6. 熟悉makefile基本原理及语法规范   
7. 掌握静态库和动态库的生成

二、学习记录

1、Linux下C语言编程环境概述

包含:编辑器(vim)、编译链接器(gcc)、调试器(gdb)、项目管理器

2、vi的模式

1)vi的模式:命令行模式、插入模式、底行模式

a.命令行模式:用户可以上下移动光标进行删除字符或者整行删除等,或进行复制、粘贴等,但无法编辑文字。

b.插入模式:用户可以进行文字编辑输入,用户按[esc]可回到命令行模式。

c.底行模式:光标位于屏幕的底行,用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。

3、vi的基本流程

(1)进入 vi,即在命令行下键入“vi hello”(文件名)。此时进入的是命令行模式,光标位于屏幕的上方

(2)在命令行模式下键入 i 进入插入模式,如图 3.3 所示。可以看出,在屏幕底部显示有“插入”表示插入模式中的输入状态,在该模式下可以输入文字信息。

(3)最后,在插入模式中,按“Esc”键,则当前模式转入命令行模式,并在底行行中输入“:wq”(存盘 退出)进入底行模式,如图 3.4 所示。
这样,就完成了一个简单的 vi 操作流程:命令行模式→插入模式→底行模式。

4、 vi的各模式功能键

1)命令行模式功能键:

2)插入模式功能键:按“Esc”键可回到命令行模式

3)底行模式功能键:

:wq!:强制保存并退出

5、gcc编译器所支持编译源文件的后缀及其解释

6、gcc 编译流程解析:预处理、编译、汇编、链接

Linux的可执行文件并没有像 Windows 那样有明显的.exe后缀名, 只需向其分配x(可执行)权限即可 sudo chmod u+x excutefile

gcc的-E参数可以让gcc在预处理结束后停止编译过程。

将hello.i编译为目标代码,gcc默认将.i文件看成是预处理后的C语言源代码,因此它会直接跳过预处理,开始编译过程。

gcc预处理源文件的时候(第一步),不会进行语法错误的检查。语法检查会在第二步进行,比如花括号不匹配、行末尾没有分号、关键字错误等。

1)预处理阶段:在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef 等)进行处理。在上述代码的预处理过
程中,编译器将包含的头文件 stdio.h 编译进来,并且用户可以使用 gcc 的选项“-E”进行查看,该选项的
作用是让 gcc 在预处理结束后停止编译过程。

例如:[root@localhost gcc]# gcc –E hello.c –o hello.i

选项“-o”是指目标文件,“.i”文件为已经过

Week2学习过程报告的更多相关文章

  1. Linux第二次报告20135221

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 熟悉Linux系统下的开发环境   2. 熟悉vi的基本操作   3. 熟悉gcc编译器的基本原理   4. 熟练使用gcc ...

  2. USB学习小记-HID类键盘的报告描述符的理解

    前言 断断续续的学习了将近三个月,才把USB的HID类搞明白,速度真是够慢的.利用晚上+周末的时间学习自己的东西确实是必要的,不过效率是有点低,以后要更专注一些才行,希望自己能做到吧. 在学习过程中, ...

  3. 20155304 实验一《Java开发环境的熟悉》实验报告

    20155304 实验一实验报告 实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编译.编译.运行.调试Java程序. 实验步骤 (一)命令行下 ...

  4. Java实验报告(实验三)

    课程:Java程序设计          班级: 1351 姓名:王玮怡                学号:20135116 成绩:             指导教师:娄嘉鹏       实验日期: ...

  5. 20145118 《Java程序设计》 实验报告三

    实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2 ...

  6. 20172329 2018-2019-2 《Java软件结构与数据结构》实验二报告

    20172329 2018-2019-2 <Java软件结构与数据结构>实验二报告 课程:<Java软件结构与数据结构> 班级: 1723 姓名: 王文彬 学号:2017232 ...

  7. 20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145221 <Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调 ...

  8. selenium+python自动化81-html报告优化(饼图+失败重跑+兼容python2&3)

    优化html报告 为了满足小伙伴的各种变态需求,为了装逼提升逼格,为了让报告更加高大上,测试报告做了以下优化: 测试报告中文显示,优化一些断言失败正文乱码问题 新增错误和失败截图,展示到html报告里 ...

  9. 20155213 实验三《敏捷开发与XP实践》实验报告

    20155213 实验三<敏捷开发与XP实践>实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)> ...

随机推荐

  1. Python 虚拟环境:Virtualenv

    安装sudo yum install python-virtualenv 使用方法 virtualenv [虚拟环境名称] 如,创建**ENV**的虚拟环境 virtualenv ENV 默认情况下, ...

  2. INFORMATICA 的调优之一 源数据的优化

    5W1H法来实现源数据的优化 做数据仓库项目的朋友都能感到数据质量和数据抽取展现的性能是整个数据仓库项目的重点.下面谈谈我在DW项目中处理源数据质量问题的5W1H方法. 5W : WHO ,WHAT, ...

  3. 基于51单片机+DAC0832的信号发生器

    最近帮别人设计一个毕业设计,做一个多种信号发生器(四种波形:方波.三角波.锯齿波.梯形波),现在贴上来给大家参考,如果有错误的地方,望指出~ 下面先贴上仿真的电路图(仿真的软件是Protuse,上传一 ...

  4. 20150912华为机考2之"输入一段字符串(英文),将每个单词首字母大写后输出"

    还有其他一些(隐性)要求(要不然无法通过测试): .如果首字母已经大写,则不用变 .不是英文字母的不变 e.g. Input: hello world! this is _Ljj speaking! ...

  5. 快速理解Kafka分布式消息队列框架

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ ==是什么 == 简单的说,K ...

  6. ZooKeeper 安装部署及hello world(转)

    ZooKeeper  安装部署及hello world 先给一堆学习文档,方便以后查看官网文档地址大全:OverView(概述)http://zookeeper.apache.org/doc/r3.4 ...

  7. HDU 3584 Cube --三维树状数组

    题意:给一个三维数组n*n*n,初始都为0,每次有两个操作: 1. 翻转(x1,y1,z1) -> (x2,y2,z2) 0. 查询A[x][y][z] (A为该数组) 解法:树状数组维护操作次 ...

  8. Android UI组件----ListView列表控件详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  9. 第10章 同步设备I/O和异步设备I/O(4)_利用I/O完成端口实现Socket通信

    I/O完成端口原理见上一篇(可点击这里) 10.5.4.4 利用I/O完成端口实现Socket通信 (1)Accept和AcceptEx流程的比较 ①采用accept方式的流程示意图如下(普通的阻塞函 ...

  10. 台北Unity开发者研讨会 笔记

    本文转自:http://ndark.wordpress.com/2013/05/12/20130511-台北unity开发者研讨会-笔记/ (墙外) 说明 本文单纯只是笔记,若有笔误敬请见谅. 相关参 ...