c语言-gcc基础培训

c语言-gcc基础培训

ID:36049318

大小:708.55 KB

页数:77页

时间:2019-05-01

c语言-gcc基础培训_第1页
c语言-gcc基础培训_第2页
c语言-gcc基础培训_第3页
c语言-gcc基础培训_第4页
c语言-gcc基础培训_第5页
资源描述:

《c语言-gcc基础培训》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C语言-GCC上海**通信技术有限公司Jim(seniordba@sina.com)2011-051培训大纲一、gcc简介二、gcc编译过程三、gcc编译选项四、静态/动态链接库五、其它2gcc简介名称:GNUprojectCandC++CompilerGNUCompilerCollectiongcc是一个全功能的ANSI C兼容编译器,它是所有UNIX系统可用的C编译器。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。3查看版本信息4

2、查看安装路径5相关文件类型c为后缀的文件,C语言源代码文件;.a为后缀的文件,是由目标文件构成的档案库文件;.C,.cc或.cxx为后缀的文件,是C++源代码文件;.h为后缀的文件,是程序所包含的头文件;.i为后缀的文件,是已经预处理过的C源代码文件;.ii为后缀的文件,是已经预处理过的C++源代码文件;.m为后缀的文件,是Objective-C源代码文件;.o为后缀的文件,是编译后的目标文件;.s为后缀的文件,是汇编语言源代码文件;.S为后缀的文件,是经过预编译的汇编语言源代码文件。6gcc编译的4

3、个过程预处理(也称预编译,Preprocessing):命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。编译(Compilation):接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编(Assembly):汇编过程是针对汇编语言的步骤,调用as进行工作。连接(Linking):当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接7可执行程序的生成过程

4、预处理(Preprocessing):分析各种预处理命令,如#define,#include,#if等;编译(Compilation):根据输入文件产生汇编语言的程序;汇编(Assembly):将汇编语言输入,产生扩展名为.o的目标文件;链接(Linking):以.o目标文件,库文件作为输入,生成可执行文件;源程序文件(.h,.c)经预处理的文件(.i)汇编语言文件(.s)目标文件(.o)可执行程序(.out)8培训大纲一、gcc简介二、gcc编译过程三、gcc编译选项四、静态/动态链接库五、其它9G

5、CC编译过程典型的编译过程test.c–预处理test.i–编译test.s–汇编test.o–连接test$cattest.c(查看程序源代码)#includeintmain(intargc,char*argv[]){printf("helloworld");return0;}$gcc–otesttest.c(编译连接程序)$./test(执行test程序)101、没有任何选项:gcchelloworld.c结果会在和helloworld.c相同的目录下产生一个a.ou

6、t的可执行文档。2、-o选项,指定输出文档名:gcc-ohelloworldhelloworld.c-o意思是Output即需要指定输出的可执行文档的名称。这里的名称为helloworld。3、-c选项,只编译汇编,不连接:gcc-chelloworld.c-c意思就是Compile,产生一个叫helloworld.o的目标文档4、-S选项,产生汇编源文档:gcc-Shelloworld.c-S意思就是aSsemble,产生一个叫helloworld.s的汇编源文档5、-E选项,预处理C源文档:gcc

7、-Ehelloworld.c-E意思就是prEprocess。输出不是送到一个文档而是标准输出。当然能够对他进行重定向:gcc-Ehelloworld.c>helloworld.txt11预处理预编译命令:$gcc-otest.i-Etest.c或者$cpp-otest.itest.c这里cpp不是值cplusplus,而是theCPreprocessor执行结果:生成预处理后的文件test.i,该文件包含了test.c需要的所有的类型和函数申明。原理:读取c源程序,对伪指令和特殊符号进行处理。包括宏

8、,条件编译,包含的头文件,以及一些特殊符号。基本上是一个替换的过程。12#define用法#include#defineAA100intmain(void){AABBprintf(“hello”);}预处理命令gcc–Ehello.c–DBB=hellogcc–Ehello.c–DBB=“printf(”hello”);”gcc–Ehello.c–DBB(等效于-DBB=1)注释这一行看看预处理的结果-D表示在命令行中传入宏定义

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

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

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