gnu_gcc_开发教程

gnu_gcc_开发教程

ID:5398924

大小:749.00 KB

页数:76页

时间:2017-11-10

gnu_gcc_开发教程_第1页
gnu_gcc_开发教程_第2页
gnu_gcc_开发教程_第3页
gnu_gcc_开发教程_第4页
gnu_gcc_开发教程_第5页
资源描述:

《gnu_gcc_开发教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、GNUGCC开发教程gnugccturiolgnugcc简介目前Linux下最常用的C语言编译器是GCC(GNUCompilerCollection),它是GNU项目中符合ANSIC标准的编译系统.是Linux的基石,操作系统内核和大部分程序都是gcc编译的,是Linux下最重要开发工具之一gcc早期是c的编译器,后来发展能支持c,c++和objectC,它可以通过不同的前端模块来支持各种语言,如Java、Fortran、Pascal、Modula-3和Ada等。gcc是一个交叉平台的编译器,目前支

2、持几乎所有主流CPU的处理器平台.gcc支持的文件格式gcc支持源码格式.cC源程序;.C,.cc,.cxx,.cppC++源程序;.mObjective-C源程序;.i预处理后的C文件;.ii预处理后的C++文件;.s汇编语言源程序;.S汇编语言源程序;.h预处理器文件;其它格式.o目标文件(Objectfile).a归档库文件(Archivefile)GCC组成gcc一般安装在/usr/bingcc是一组编译工具的总称,包含如下工作C编译器cc,cc1,cc1plus,gccC++编译器c++,

3、cc1plus,g++源码预处理程序cpp,cpp0库文件libgcc.a,libgcc_eh.a,libgcc_s.so,ibiberty.a,libstdc++,libsupc++.agcc的起步生成一个hello,world程序gcchello.c-ohello#把hello.c编译成一个可执行程序hellogcchello.c#不指定输出名,生成一个a.outHello程序#include#defineMY_NUMBER5intmain(void){printf("Hell

4、o%d,theWorld!",MY_NUMBER);return0;}编译hello用GCC编译程序可执行程序的构造任何一个可执行程序从源代码到可执行的二进制程序之中都要经过固定的几步预编译(Pre-Processing)这一步完成对预编译代码的处理编译(Compiling)将源代码编译成汇编代码汇编(Assembling)将汇编代码汇编成目标文件链接(Linking)将目标代码和所需要库的链成一个完整的应用程序集成开发环境(IDE)自动协助开发完成这几步,如VC++在Linux下,如果使用命令

5、行开发工具(gcc,ld,ar)等,需要用户手工调用这一些命令来完成这几步骤.gcc在构建程序的作用gcc在构建应用程序里,会调用不同的应用程序完成每一步.因此在开发中,gcc处于一个核心地位.大部分开发只需要调用gcc即可gcc所做操作Gcc调用cpp进行预处理Gcc调用cc1进行编译,会生成汇编代码Gcc调用as对汇编代码,生成扩展名为.o的目标文件Gcc调用ld来完成对所有目标文件的链接.为什么要用gcc随着Linux的GUI改进,也出现了越来越多的IDE开发环境.象VC++,自动完成各个开发

6、流程但这一些IDE基本上是基于gcc编译而且大部分项目,包括嵌入式开发,都是提供gcc命令行开发模式.因此用gcc开发是Linux和嵌入式开发的必须使用的工具.也是基本功之一hello编译过程分析以下将上述gcc编译过程,分成几个步骤单独进行,并生成每步运行结果供观察第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:#gcc-Ehello.c-ohello.i下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成,。#gcc-chello.i-ohello.o最后

7、一步是将生成的目标文件链接成可执行文件#gcchello.o-ohello注意:gcc编译时是对输入文件扩展名是敏感的,即.c一定会当做C代码编译,.cpp,.C…一定会当成C++代码编译,这一点跟大部分Linux程序不一样gcc的结果输出是后缀名不相关的.只与输出参数相关.这跟一般Linux程序是一样gcchello.c-ohello.o#虽然后缀名是.o,但实际是一个应用程序gcc各个编译步骤多文件gcc的处理在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成

8、了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由foo1.c和foo2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序foo,可以使用下面这条命令:gccfoo1.cfoo2.c-ofoo在编译一个包含许多源文件的工程时,若只用一条GCC命令来完成编译是非常浪费时间的。假设项目中有100个源文件需要编译,并且每个源文件中都包含10000行代码,如果像上面那样仅用一条GCC命令来完成编译工作,那么GCC需要将每个源文件都重新编译一遍,

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

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

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