第三部分 基础工具
第十八章 GCC的使用
本章介绍如何使用GCC将C的源代码编译为可执行程序,首先,我们介绍GCC基本的选项及编译的步骤,接着我们介绍如何使用GCC的警告选项来检查程序,最后,我们总结编译优化的选项。
本章提供最基本的GCC知识给你,如果更细节的知识,如体系结构的细节或系统的特殊选项,这些基本的方向将告诉你如何在GCC手册中查找你想要的。手册在GCC发布版本中以文本的形式包含。你也可以查看HTML格式的文档,路径为:http://gcc.gnu.org/onlinedocs/。
18.1 GNU编译器
GCC以前为“GNU C Compiler”的缩写,自从它出现以后,就开始支持除过C之外的其他编程语言,包括C++, Ada, Object-C, Fortran和Java, 所以GCC的含义被重新定义为”GNU Compiler Collection”,此编译器合并了好多特性来翻译不同的语言,在本书中,我们仅关心和C相关的特性。
GCC为一个多目标的编译器,换句话讲,它有可互换的模块来为许多不同的计算机体系结构产生输出,就像组合式概念所建议的,GCC也可以被用做交叉编译,就是说,你可以生成与GCC运行的操作系统不同的系统上的执行程序,然而,这需要进行特殊的配置,而且绝大多数GCC适合生成于它们所运行系统相同系统上的执行程序。
GCC不仅支持许多C的“方言”版本,而且能够区分它们,换句话说,你可以使用命令行参数来控制在编译你的程序时,依据哪种C语言标准,对所有C99的特性支持还没有全部完成,GCC的开发者们维护了一个目前支持C99特性的列表,参见http://gcc.gnu.org/c99status.html。
18.2 获取和安装GCC
如果你有一个类UNIX系统,很可能已经安装了GCC,为了找出它,可以在命令提示符下输入 cc –version来查看,如果GCC已经安装,且使用默认的C编译器名称cc,你将会看到编译的版本号及版权信息:
[duanyx@localhost root]$ cc --version
cc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
如果GCC可能已经安装,但是名子不是cc,以防万一,试着使用其固有的名称为调用编译器,如下:
[duanyx@localhost root]$ gcc –version
如果GCC没有安装,请教你的系统卖主看是否GCC在系统的二进制安装包中,否则,你可以从自由软件基金获取GCC源码,然后在你的系统上编译它,源码路径:http://gcc.gnu.org/mirrors.html,参考http://gcc.gnu.org/install/.上的指导一步步进行,如果你仅想支持C的编译,这时你仅需要GCC的“核心发行版本”,它将去除其他语言的模块,其大小仅为GCC软件包大小的一半。
如果你的系统中根本没有C编译器,那就不能编译GCC源码,你需要安装一个编译的二进制,GCC的网站上维护了一个使用第三方编译器编译好的GCC安装包,并支持从AIX到Windows的不同系统。
18.3 用GCC编译C程序
当运行GCC时,它的默认行为是由源代码生成可执行程序,举一个简单的例子,我们使用GCC来编译本书第一个例子Example1-1,如下:
# gcc -Wall circle.c
这个命令行仅含有一个编译名、源文件名和一个选项:-Wall,用来指导GCC在程序中有警告存在时将警告信息打印出来, 可在本章的后面的“编译器警告”一节得到更多信息。如果源文件中没有错误,GCC运行并退出,不会打印任何信息。它的输出为在当前路径下产生一个程序文件,采用默认名称a.out(在Windows中,默认的名称为a.exe), 我们可以运行这个程序:
# ./a.out
它将产生如下的输出:
[root@localhost gcc_test]# ./a.out
Areas of Circles
Radius Area
-------------------------
1.0 3.14
5.0 78.54
如果不想让可执行程序名称为a.out,可以使用 –o 选项来为输出文件指定一个文件名:
# gcc -Wall -o circle circle.c
此命令产生相同的执行程序,但现在的名子为circle。
分享到:
相关推荐
02H3 C VEPC3200核心网故障处理手册pdf 03H3CBBU3100系列基带处理单元故障处理手册,p 04H3 C VEPC3200产品开局自检手册pdf 05H3 C VMEGW3200技术白皮书pdf 06移动通信技术概述pdf 07H3CEPC3108核心网特性手册(E2123)...
C程序员在编写程序时手头一定要有这本书。在这本书中,C 语言专家 Peter Prinz和Tony Crawford为你提供大量的编程参考信息。全书叙述清晰,语句简洁,分析深刻。本书主题包括: C 语言的语法、GNU编译器选项、标准...
·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。 ·给出了几个指导章节用于帮助新手入门。 ·为php、perl和c语言提供了应用程序编程接口(api)。 ·在每章的api开头部分提供了简要的指南。 ...
C语言核心技术是C语言工程师常用的手册知道,是外文翻译过来的,通俗易懂,适合初学者以及开发人员
目前还没翻译完成,持续更新中,第一次翻译,遇到其中的错误请大家留言提醒,谢谢。
ALIENTEK STM32H750核心板底板 PDF原理图+AD集成封装库+主要器件技术手册: 集成封装库: 3.5TFTLCD封装库.IntLib ATK-4.3' TFTLCD电容触摸屏模块_V1.2.IntLib ATK-4342 4.3寸RGB屏模块封装库.IntLib ATK-7016&7084 ...
迅为iTOP4412核心板配套开发底板ALTIUM设计硬件(原理图+PCB)+核心器件技术手册,2层板设计,大小为192x108mm,双面布局布线,Altium Designer 设计的工程文件,包括完整的原理图及PCB文件,可以用Altium(AD)软件打开...
书名:JSP 2.0 技术手册(电子书) 格式:PDF 出版:电子工业出版社 作者:林上杰、林康司 本书图文并茂,以丰富的实例为引导,全面介绍了主流的 Java Web 开发技术—— JSP 2.0,重点介绍Java在展示层的两项重要技术...
C++核心编程技术 .rar http://down.qiannao.com/space/file/yuexingchen2/-4e0a-4f20-5206-4eab/C-002b-002b-0020-0020-00b7C-0020-0020vc/C-002b-002b-6838-5fc3-7f16-7a0b-6280-672f-0020.rar/.page C程序100例 ....
迅为iTOP4412核心板配套开发底板cadence设计硬件(原理图+PCB)+核心器件技术手册,2层板设计,大小为192x108mm,双面布局布线,cadence 设计的原理图PCB工程文件,包括完整的原理图及PCB文件,可以用Altium(AD)软件...
这是一套Java核心技术基础使用手册,包含Java 基础核心总结、Java核心基础、Java核心知识、Java 基础面试题总结等,内含最强 Java 核心知识点整理及思维导图,需要的朋友可下载试试! Java是一门编程语言,Java发展...
ALIENTEK STM32F750核心板+开发底板PDF原理图+AD集成封装库+主要器件技术手册,ALTIUM集成封装库器件列表: Library Component Count : 63 Name Description ----------------------------------------------------...
STM32F767单片机核心板+开发底板PDF原理图+AD集成封装库+主要器件技术手册:3710FXXX037XXFX01.pdf 3710MXXX046XXFX01.pdf AMS1117.pdf AP3216C.pdf AT24C02.pdf AT8574_8574A_DS001V1.2.pdf CAT6219.pdf CH340.pdf ...
H3C S9500系列交换机是H3C公司面向以业务为核心的企业网络架构而推出的新一代核心路由交换机,该产品基于H3C公司自适应安全网络的技术理念,在提供大容量、高性能L2/L3交换服务基础上,进一步融合了硬件IPv6、网络...
·提供了mysql语句、函数、配置选项和实用工具的一个完整手册。 ·给出了几个指导章节用于帮助新手入门。 ·为php、perl和c语言提供了应用程序编程接口(api)。 ·在每章的api开头部分提供了简要的指南。 ...
ALIENTEK STM32F767(核心板+开发底板)PDF原理图+AD集成封装库+主要器件技术手册,集成封装库部分型号器件列表: AMS1117 AP3216C ALS+PS Sensor ATK-HC05 ATK-HC05 BAT BEEP BUTTON C CAP CH340G USB2UART D DB...
TI基于KeyStone的8核固定浮点数字信号处理器,DSP集成C66x CorePac,每个核心在1至1.25 GHz到10 GHz的运行。
H3C MSR 50系列多业务开放路由器包含MSR 50-40和MSR 50-60两款设备,该系列产品可以为大型分支机构提供高性能、多业务的一体化网络方案,也可以作为大中型企业的核心网络设备,完成数据、语音、视频等多种流量的广域...