第6章 的第一个Linux应用程序.pptx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 的第一个Linux应用程序

第6章 第一个Linux应用程序6.1 向世界问好——Hello,World!6.2 程序背后做了什么6.3 程序如何来的——编译的全部过程6.4 更简单的办法——用Makefile管理工程6.1 向世界问好——Hello,World!6.1.1 用vi编辑源代码文件6.1.2 用gcc编译程序 6.1.3 执行程序6.1.1 用vi编辑源代码文件在5.3.2节介绍了vi编辑器的用法,现在使用vi编辑器编写第一个源代码文件。具体操作过程如下:1.创建源代码文件hello_test.c2.编写源代码3.保存退出1.创建源代码文件hello_test.c在Linux控制台界面下,输入vi hello_test.c。2.编写源代码#include stdio.hint main(void){ printf(Hello,World!\n); /* 打印字符串Hello,World!到屏幕 */ return 0;}3.保存退出输入实例6-1所示的源代码后,就可以保存退出了。在当前状态下,按下Esc键,输入:字符,然后输入“wq”,按下Enter键,保存文件并且退出vi。6.1.2 用gcc编译程序 编辑好源文件hello_test.c文件后,需要把它编译成可执行文件才可以在Linux下运行。在控制台模式当前目录下,输入以下命令完成编译:gcc hello_test.c6.1.3 执行程序到目前为止,第一个程序已经编译好了,下面就该执行程序了。在大多数的Linux系统上,都是通过一个名为PATH的环境变量来管理系统可执行程序的路径的,但是不幸的是,这个变量里并没有包含当前路径的“./”,所以需要按照下面的方式执行程序:./a.out6.2 程序背后做了什么6.2.1 程序执行的过程6.2.2 窥视程序执行中的秘密6.2.3 动态库的作用6.2.1 程序执行的过程一个Linux程序的加载和执行过程如图所示。6.2.2 窥视程序执行中的秘密上面的程序执行过程比较难理解,这里推荐使用strace工具分析这个程序的执行流程。再执行a.out的那个目录,输入以下命令:tom@tom-virtual-machine:~/dev_test$ strace ./a.out6.2.3 动态库的作用Linux系统有两种程序库,一种被称做静态库(static library),在程序链接的时候,把库函数的目标代码和程序连接在一起;还有一种就是前面提到的动态库(shared library),从英文字面翻译,动态库可以翻译为共享库。6.3 程序如何来的——编译的全部过程6.3.1 编译源代码6.3.2 连接目标文件到指定的库6.3.1 编译源代码一个编译系统把一个源程序翻译成目标程序的工作过程分为5个阶段:词法分析、语法分析、中间代码生成、代码优化和目标代码生成。其中主要阶段是词法分析和语法分析,也可以称为源代码分析,分析过程中发现有语法错误,给出提示信息。1.词法分析词法分析的目的是处理源代码中的单词。词法分析程序按照从左到右的顺序依次扫描源代码,生成单词对应的符号,把字符描述的程序转换为符号描述的中间程序。词法分析程序也称做词法扫描器。词法分析过程可以用手工构造和自动生成两种方法。手工构造可以使用状态图,自动生成的构造方法通常使用确定步骤的程序状态机。2.语法分析语法分析程序使用词法分析程序的结果作为输入。语法分析的功能是分析单词符号是否符合语法要求,如表达式、赋值、循环等是否构成语法要求。此外,语法分析程序还按照语法规则分析检查程序的语句是否符合合理正确的逻辑结构。3.中间代码生成中间代码也称做中间语言,是一种介于源代码与目标代码之间的表示方式。使用中间程序可以完整地表达源代码的意思,同时又使编译程序在逻辑结构上简单明确。中间语言是供编译器使用的,常见的表示形式有逆波兰几号、四元式、三元式和树等。4.代码优化代码优化的目标是生成有效的目标代码。代码优化通过对中间代码的分析,进行等价变换,达到减小存储空间和缩短运行时间的目的。程序优化并不改变源代码程序的功能。代码优化还可以对目标代码进行优化,与中间代码优化相比,对目标代码优化依赖计算机类型,但是优化的效果相对较好。5.目标代码生成编译程序的最后一项任务是生成目标代码。目标代码生成器把中间代码变换成目标代码,通常有3种变换形式:立即执行的机器语言代码待装配的机器语言模块汇编语言代码6.3.2 连接目标文件到指定的库gcc在连接用户目标文件的时候会根据用户代码使用不同的函数连接对应的动态或者静态库(根据连接选项,默认是动态库),同时,还会对所有的目标文件连接固定的预编译好的系统目标文件,这几个预编译好的目标文件用来完成程序初始化,结束时的环境设置等。6.4

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档