第五章 unix下的c语言开发环境

第五章 unix下的c语言开发环境

ID:20122991

大小:1.09 MB

页数:33页

时间:2018-10-09

第五章 unix下的c语言开发环境_第1页
第五章 unix下的c语言开发环境_第2页
第五章 unix下的c语言开发环境_第3页
第五章 unix下的c语言开发环境_第4页
第五章 unix下的c语言开发环境_第5页
资源描述:

《第五章 unix下的c语言开发环境》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章UNIX下的C语言开发环境6.1程序设计环境学习程序设计从程序语言开始,但还应了解程序执行和程序与外界的交互问题。1.理想态的程序运行环境用户程序直接控制和使用各种设备,完成各种操作。针对一个简单程序:main(){intc;while((c=getchar())!=EOF)putchar(c);}认为执行过程为:在单用户单任务环境中基本符合。2.多任务环境下程序执行多任务中每一时刻都会有多个用户程序提出访问请求,因此会有:如此混乱的情况,程序将无法运行。为使多道环境中的程序正确执行,需要OS管理。用户程序需要系统核心区程序的管理,达到各

2、自任务的执行。6.2基于系统支持的程序设计1.建立系统编程的思想理解多道环境程序执行状况,转换用户程序是执行主体的认识。了解OS可提供的服务及服务方式。充分利用OS提供服务功能解决实际问题。尽量使编写的程序最大限度的满足系统平台的支持能力。1.gcc与gdb1.1UNIX和C语言C是一种在UNIX操作系统的早期就被广泛使用的通用编程语言,它最早是由贝尔实验室的Dennis Ritchie为了UNIX的辅助开发而写的。C是所有版本的UNIX上的系统语言。几乎任何一种计算机上都有至少一种能用的C编译器;并且它的语法和函数库在不同的平台上都是统一的。

3、80年代末期美国国家标准协会(American National Standards Institute)发布了一个被称为ANSI C的C语言标准,这保证了在不同平台上的C的一致性。71.gcc与gdb1.2GNUC编译器GNU C编译器(gcc)是一个全功能的ANSI C兼容编译器,它是所有UNIX系统可用的C编译器。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。83.1LINUX下C语言编程概述1.gcc与gdbgcc编译过程:预处理,对源代码文件中的文件包含(includ

4、e)、预编译语句(如宏定义define等)进行分析。编译,就是把C/C++代码“翻译”成汇编代码。汇编,将第二步输出的汇编代码翻译成符合一定格式的机器代码,生成以.o为后缀的目标文件。链接,将上步生成的目标文件和系统库的目标文件和库文件链接起来,最终生成了可以在特定平台运行的可执行文件。101.Gcc编译流程解析如本章开头提到的,Gcc的编译流程分为了4个步骤,分别为:·预处理(Pre-Processing);·编译(Compiling);·汇编(Assembling);·链接(Linking)。下面就具体来查看一下Gcc是如何完成4个步骤的。

5、首先,有以下hello.c源代码:#includeintmain(){printf("Hello!Thisisourembeddedworld!");return0;}3.3Gcc编译器(1)预处理阶段在该阶段,编译器将上述代码中的stdio.h编译进来,并且用户可以使用Gcc的选项“-E”进行查看,该选项的作用是让Gcc在预处理结束后停止编译过程。[root@localhostGcc]#Gcc–Ehello.c–ohello.i在此处,选项“-o”是指目标文件,由上表可知,“.i”文件为已经过预处理的C原始程序。以下列出

6、了hello.i文件的部分内容:typedefint(*__gconv_trans_fct)(struct__gconv_step*,struct__gconv_step_data*,void*,__constunsignedchar*,__constunsignedchar**,__constunsignedchar*,unsignedchar**,size_t*);…#2"hello.c"2intmain(){printf("Hello!Thisisourembeddedworld!");return0;}由此可见,Gcc确实进行了预处

7、理,它把“stdio.h”的内容插入到hello.i文件中。(2)编译阶段接下来进行的是编译阶段,在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。[root@localhostGcc]#Gcc–Shello.i–ohello.s以下列出了hello.s的内容,可见Gcc已经将其转化为汇编了,感兴趣的读者可以分析一下这一行简单的C语言小程序是如何用汇编代码实现的。.file"hello

8、.c“.section.rodata.align4.LC0:.string"Hello!Thisisourembeddedworld!".text.g

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

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

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