GCC编译器笔记

简介

目前在Linux下最常用的C语言编译器是GCC(GUN Compiler Collection).是GUN项目中符合ANSI C标准的编译系统。

能够编译C、C++、Object C等语言编写的程序,可以通过不同的前端模块来支持各种语言,如JAVA等。

基本常用参数

GCC编译器的调用参数有100多个,介绍几个最基本常用的参数。

GCC的基本用法

gcc [options] [filenames]

options为编译器需要的参数,filenames为相关文件的名称。

  • -c

只编译,不链接成为可执行文件,生成.o后缀的目标文件,通常用于编译不包含主程序的子程序文件。

  • -o

确定输出文件的名称(不能与源文件同名),不给名称默认为a.out。

  • -g

生产符号调试工具(GUN的GDB)所必要的符号讯息,要对源码进行调试,必须加入

  • -O

对程序进行优化编译、链接,但编译、链接的速度变慢

  • -O2

比-O更好的优化编译、链接,但更加慢

GCC在编译不符合ANSI/ISO C语言标准的源码时,加上-pedantic选项,使用了拓展语法的地方会产生相应的警告,但不能保证程序完全符合兼容ANSI/ISO C标准。

-Wall选项。使GCC尽可能产生多的警告信息。

-Werror选项,将所有警告当作错误处理。

调试

如果在编译时生成调试符号信息,可以使用GCC的-g或-ggdb选项。GCC在产生调试符号采用了分级,在-g选项后附加参数1、2、3来指定在代码中计入调试信息的多少,默认2,-g2。3最详细,1最少。

调试选项会使生成的二进制文件的大小剧增,增加程序在执行时的开销,尽在软件开发和调试阶段使用。

GCC还支持其他调试选项-p、-pg,他们会将剖析(Profiling)信息加入到最终生成的二进制代码中,对找出程序性能的瓶颈有帮助。

-p选项:会在生成的代码中加入通用剖析工具Prof能够识别的统计信息

-pg选项:生成只有GUN剖析工具Gprof才能识别的统计信息

优化

-O、-O2能够程序带来更好的执行性能

但在以下场合避免优化代码

  • 程序开发时
  • 资源受限时(优化会增加执行代码的体积)
  • 跟踪调试时

编译基本流程

预处理Pre-Processing

编译Compiling

汇编Assembling

链接Linking

其他编译工具

C++编译器G++

EGCS

F2C和P2C(Fortran代码转C代码,Pascal代码转C代码)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章