Linux Shell教案整理.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux的C语言开发学习之旅 ——MEC-LinuxC课程教材 第1版 作者: 王新华 目 录 第一篇 Linux基础篇 第一章. 初识Linux 1 第二章. Linux常用命令 2 第三章. Linux Shell详解 3 第四章. Awk 详解 4 第五章. GCC编译器 1 第一节. 编译过程及原理简述 1 5.1.1. 编译的定义 1 5.1.2. 编译过程描述 1 第二节. GCC编译器的使用 4 5.2.1. GCC编译器简述 4 5.2.2. GCC的具体用法 5 第三节. GCC编译器使用时常见编译链接错误讲解 11 第六章. 自动构建脚本makefile 12 第一节. 自动构建概述 12 第二节. 如何实现自动构建 12 6.2.1. 假设的解决方案 12 6.2.2. 最流行的构建脚本 13 第三节. make命令与makefile 13 6.3.1. 第一个makefile例子 13 6.3.2. makefile规则 15 6.3.3. make是如何工作的与makefile推导 17 6.3.4. makefile变量 17 6.3.5. 模式规则 22 6.3.6. makefile实例 23 第一篇 Linux基础 初识Linux Linux常用命令 Linux Shell详解 Awk 详解 GCC编译器 本章序言: 编译过程及原理简述 编译的定义 编译的是一个“汇编翻译的过程”(这里的汇编一词是“汇集编纂”之意),既然其核心概念是翻译,那么就有被翻译的内容和翻译得到的结果,即就是编译过程的输入和输出。其输入是具有人文意义的由字符组成的源程序代码文件(可以认为是高级语言,即就是更接近人类理解及功能更强大的语言),输出的结果就是交给机器直接运行的可执行的二进制程序文件或字节代码文件。 编译过程描述 编译过程事实上是一个及其复杂的过程,第一个编译软件的问世经历了相当漫长的历史过程,为此很多计算机科学家付出了他们的智慧和心血,这些科学家还将这些智慧结晶进行整理总结和求证,给出了一套方法论,它叫做“编译原理”,以至于构成了现在的计算机科学领域的独立学科之一。 本文本章节并不会深入探讨编译原理中所阐述的词法分析,语法分析,语义分析等具体过程,本节主要描述编译过程的主要步骤与环节。 从源程序代码到可执行的应用程序的编译过程主要步骤可分为三大步骤,它们分别是:第一步,预编译;第二步,编译;第三步,链接。 如图所示,给出了“编译过程”三大步流程。 图 五1编译过程流程图 如所示,注意:预编译、编译和链接三个步骤都有自己独立的输入和输出内容。以下将对这三个步骤做详细解释。 第一步,预编译。 预编译往往是处理高级语言中的某些特定内容,将其翻译成另一种高级语言,依然是文本文件级别的源程序。那么这些特定的内容,在不同的语言中有不同的叫法和定义。例如:在C语言中的这种特定内容是使用“#”开头所声明和定义的内容。这个从编程角度叫做“宏”,而在C语言编译器角度又叫做“预编译命令”。 而在另外一种针对数据库的编程语言Pro*C中的这种特定内容则是EXEC SQL 之类的描述,被称之为SQL预处理命令,而它们也会被预编译软件翻译成使用OCI的C语言程序。其他的很多语言依然如此,包括:Java,C++,C#等等。 “预编译”过程的输入是:被编译的高级语言;输出是:另一种(或另一形式的同一种)高级语言,往往我们会把这个输出又叫做“中间文件”。 第二步,编译。 这里所说的第二步编译过程是更加侠义范围的。但依然是一个非常重要的翻译过程。它是将预编译得到的结果进行最为复杂的翻译,将其翻译成更接近计算机硬件能够识别的语言,即就是二进制机器语言。 这里所提到的编译就是上一个步骤(预编译)的输出,因此不再赘述。 这里需要仔细说明一下这个步骤的输出,我们叫他“目标文件”。目标文件的内容是非常接近二进制机器语言的,但是却不能直接被计算机读取然后运行。 目标文件中包含了很多编译得到的机器语言。但是还增加了很多人文意义的内容,这些内容包括:函数名称与函数地址,全局数据名称等等内容。这些函数名称与函数地址指向了具体的某一个数据范围,这个范围的内容就是可以直接运行的机器语言。其映射关系及目标文件内容示意图如图四-2所示。 图 五2 目标文件结构示意图 上图内容,只是一个大致的描述。图中左边若干个矩形描述的内容对于整个目标文件来说类似于书本的目录,而右边的内容则是书本具体的内容。因此在看待目标文件时,可以认为其是一本书。 之所以这样处理,它是为了第三步“链接”做的准备。 第三步,链接。 链接的过程是一个在整个“从高级语言到机器语言的编译”过程中比较特殊的一个过程。它是根据目标文件中的内容,将所需要的多个目标文件的内容串

文档评论(0)

AnDyqaz + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档