Linux下C编程

Linux下C编程

ID:32365374

大小:1.40 MB

页数:292页

时间:2019-02-03

Linux下C编程_第1页
Linux下C编程_第2页
Linux下C编程_第3页
Linux下C编程_第4页
Linux下C编程_第5页
资源描述:

《Linux下C编程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第1章编译与调试1.1编译的概念和理解在进行C程序开发时,编译就是将编写的C语言代码变成可执行程序的过程,这一过程是由编译器来完成的。编译器就是完成程序编译工作的软件,在进行程序编译时完成了一系列复杂的过程。1.1.1程序编译的过程在执行这一操作时,程序完成了复杂的过程。一个程序的编译,需要完成词法分析、语法分析、中间代码生成、代码优化、目标代码生成。本章将讲解这些步骤的作用与原理。(1)词法分析。指的是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号。然后把字符串的源程序改造成为单词符号串的中间程序。在编译程序时,这一过程

2、是自动完成的。编译程序会对代码的每一个单词进行检查。如果单词发生错误,编译过程就会停止并显示错误。这时需要对程序中的错误进行修改。(2)语法分析。语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语句。例如,需要检查表达式、赋值、循环等结构是否完整和符合使用规则。在语法分析时,会分析出程序中错误的语句,并显示出结果。如果语法发生错误,编译任务是不能完成的。(3)中间代码生成。中间代码是源程序的一种内部表示,或称中间语言。程序进行词法分析和语法分析以后,将程序转换成中间代码。这一转换的作用是使程序的结构更加简单和规范。中间代码生成操作是一个中间过

3、程,与用户是无关的。(4)代码优化。代码优化是指对程序进行多种等价变换,使得从变换后的程序能生成更有效的目标代码。用户可以在编译程序时设置代码优化的参数,可以针对不同的环境和设置进行优化。(5)目标代码生成。目标代码生成指的是产生可以执行的应用程序,这是编译的最后一个步骤。生成的程序是二进制的机器语言,用户只能运行这个程序,而不能打开这个文件查看程序的代码。1.1.2编译器所谓编译器,是将编写出的程序代码转换成计算机可以运行的程序的软件。在进行C程序开发时,编写出的代码是源程序的代码,是不能直接运行的。需要用编译器编译成可以运行的二进制程序。第5章编译与调试在

4、不同的操作系统下面有不同的编译器。C程序是可以跨平台运行的。但并不是说Windows系统下C语言编写的程序可以直接在Linux下面运行。Windows下面C语言编写的程序,被编译成exe文件。这样的程序只能在Windows系统下运行。如果需要在Linux系统下运行,需要将这个程序的源代码在Linux系统重新编译。不同的操作系统下面有不同的编译器。Linux系统下面编译生成的程序是不能在Windows系统上运行的。1.2gcc编译器gcc是Linux下的C程序编译器,具有非常强大的程序编译功能。在Linux系统下,C语言编写的程序代码一般需要通过gcc来编译成可

5、执行程序。1.2.1gcc编译器简介Linux系统下的gcc编译器(GNUCCompiler)是一个功能强大、性能优越的编译器。gcc支持多种平台的编译,是Linux系统自由软件的代表作品。gcc本来只是C编译器的,但是后来发展为可在多种硬体平台上编译出可执行程序的超级编译器。各种硬件平台对gcc的支持使得其执行效率与一般的编译器相比平均效率要高20%~30%。gcc编译器能将C、C++源程序、汇程语言和目标程序进行编译链接成可执行文件。通过支持make工具,gcc可以实施项目管理和批量编译。经过多年的发展,gcc已经发生了很大的变化。gcc已经不仅仅能支持C

6、语言,还支持Ada语言、C++语言、Java语言、ObjectiveC语言、Pascal语言、COBOL语言等更多的语言集的编译。gcc几乎支持所有的硬件平台,使得gcc对于特定的平台可以编译出更高效的机器码。gcc在编译一个程序时,一般需要完成预处理(preprocessing)、编译(compilation)、汇编(assembly)和链接(linking)过程。使用gcc编译C程序时,这些过程是使用默认的设置自动完成的,但是用户可以对这些过程进行设置,控制这些操作的详细过程。1.2.2gcc对源程序扩展名的支持扩展名指的是文件名中最后一个点的这个点以后的

7、部分。例如下面是一个C程序源文件的扩展名。5.1.c那么这个文件的文件名是“5.1.c”,扩展名是“.c”。通常来说,源文件的扩展名标识源文件所使用的编程语言。例如C程序源文件的扩展名一般是“.c”。对编译器来说,扩展名控制着缺省语言的设定。在默认情况下,gcc通过文件扩展名来区分源文件的语言类型。然后根据这种语言类型进行不同的编译。gcc对源文件的扩展名约定如下所示。y.c为扩展名的文件,为C语言源代码文件。y.a为扩展名的文件,是由目标文件构成的库文件。y.C,.cc或.cpp为扩展名的文件,标识为C++源代码文件。y.h为扩展名的文件,说明文件是程序所包

8、含的头文件。y.i为扩展名的文件,标识

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。