简单 gcc 参数

gcc 有超过1 0 0个的编译选项可用。这些选项中的许多选项一般根本不会用到,但一些主
要的选项将会频繁用到。很多的g c c选项包括一个以上的字符。因此必须为每个选项指定各自
的连字符,并且就像大多数L i n u x命令一样,不能在一个单独的连字符后跟一组选项。例如,
下面的两个命令是不同的:
gcc -p -g test.c
gcc -pg test.c
第一条命令告诉g c c编译t e s t . c时为p r o f命令建立剖析信息并且把调试信息加入到可执行的
文件里。第二条命令只告诉g c c为g p r o f命令建立剖析信息。
如果编译一个程序时不使用任何选项, gcc 将会建立(假定编译成功)一个名为a.out 的可
执行文件。例如,下面的命令将在当前目录下产生一个名为a . o u t的文件:
gcc test.c
可以使用- o编译选项来为即将产生的可执行文件指定一个文件名来代替a . o u t。例如,将
一个叫c o u n t . c的C程序编译为名叫c o u n t的可执行文件,可以输入下面的命令:
gcc -o count count.c
gcc 同样有指定编译器处理多少的编译选项。- c选项告诉gcc 仅把源代码编译为目标代码
而跳过汇编和连接的步骤。这个选项使用得非常频繁,因为它使编译多个C程序时的速度更快
并且更易于管理。缺省时g c c建立的目标代码文件有一个.o 的扩展名。
-S 编译选项告诉g c c在为C代码产生了汇编语言文件后停止编译。gcc 产生的汇编语言文
件的缺省扩展名是. s。- E选项指示编译器仅对输入文件进行预处理。当使用这个选项时,预处理器的输出被送到标准输出而不是储存在文件里。
1. 优化选项
用g c c编译C代码时,它会尝试用最少的时间完成编译并且使编译后的代码易于调试。易
于调试意味着编译后的代码与源代码有同样的执行次序,编译后的代码没有经过优化。有很
多选项可用于告诉gcc 在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行
文件。这些选项中最典型的是- O和- O 2选项。
- O选项告诉g c c对源代码进行基本优化。这些优化在大多数情况下都会使程序执行得更
快。- O 2选项告诉g c c产生尽可能小和尽可能快的代码。- O 2选项将使编译的速度比使用- O时慢。
但通常产生的代码执行速度会更快。
除了- O和- O 2优化选项外,还有一些低级选项用于产生更快的代码。这些选项非常特殊,
而且最好只有完全理解这些选项将会对编译后的代码产生什么样的效果时再去使用它们。
2. 调试和剖析选项
gcc 支持数种调试和剖析选项。在这些选项里最常用到的是- g和- p g选项。
- g选项告诉g c c产生能被G N U调试器g d b使用的调试信息以便调试程序。g c c提供了一个很
多其他C编译器里没有的特性,在g c c里可以将- g和-O (产生优化代码)联用。这一点非常有用,
因为这样可以在与最终产品尽可能相近的情况下调试代码。在同时使用这两个选项时必须清
楚所写的某些代码已经在优化时被g c c做了改动。
- p g选项告诉g c c在程序里加入额外的代码,执行时,将产生g p r o f用的剖析信息以显示程
序的耗时情况。
上面介绍的都是关于g c c的最简单的知识。如果想详细了解g c c,请参考G C C - H O W TO,
或者在s h e l l提示符下输入:
man gcc
这样可以浏览g c c的手册页。
当然,对规模较大的程序来说,仅仅一行编译指令是远远不够的。有多种G N U实用工具
可以帮助完成编译选项的设置,如a u t o c o n f、a u t o m a k e和l i b t o o l等。G U I生成器G l a d e所生成的
代码中有一个a u t o g e n . s h脚本,也可以用来完成这件工作。
原文地址:https://www.cnblogs.com/zhihaowang/p/10128729.html