gcc常用参数

1 启用1999 ISO C编译器扩展:-std=c99[1]P149

gcc -std=c99 hello.c


2 启用编译器所推荐的警告消息:-Wall[1]P149

gcc -Wall hello.c



3 启动静态链接:-static[1]P149

gcc -static hello.c

注意:如果不指定-static,则默认使用动态链接库;使用静态链接后,会使得编译的结果占用的空间较大!

下面是一个实际例子:

gcc常用参数_第1张图片

通过上面截图可见,当启用了-static选项的时候,使用size命令查看a.out的长度,发现各段都增加了!

4 启动优化编译:-O[1]P163

gcc -O hello.c

用途:启动编译优化后,自动变量和寄存器变量都存放在寄存器中,而全局变量,静态变量和易失变量都放在内存中。

注意:区别小写的o,-o表示输出文件,-O才是表示编译优化。

下面是一个实际例子:

gcc常用参数_第2张图片

其中globval--全局变量,autoval--自动变量,regival--寄存器变量,volaval--易失变量,statval--静态变量

通过观察前后两次编译后的运行结果可知,优化前所有变量都是放在内存中的,但是优化后autoval和regival被移动到了寄存器中。

5 启用宏展开功能:-E

gcc hello.c -E -P > hello.c

说明:> hello.c表示将宏展开的结果保存到文件hello.c中。当然也可以不要这个,这时宏展开结果将会直接在终端上显示!

           使用-E展开的过程中,同时也会产生很多附加说明信息,如果想忽略这些信息,可以使用-P选项。

下面是一个实际例子:

gcc常用参数_第3张图片

由上图可见,使用-E后,很多系统预定类型的宏都被展开了,而且看起来很复杂的样子!

6 定义预处理变量:-D

gcc -D NDEBUG main.c
    上述命令的作用等价于在main.c文件的一开始写#define NDEBUG(参考资料[7]P216)。

参考资料

[1]《UNIX环境高级编程》2nd

[2]使用gcc的-E -P选项展开源代码中的宏

[3]Ubuntu 13.04下编译GCC-4.8.2源码并安装成功

[4]Linux编译安装GCC-4.9.0

[5]CentOS 7编译安装GCC 4.9.2

[6] 升级Ubuntu 12.04下的gcc到4.7 

[7]C++Primer中文版(第5版)

你可能感兴趣的:(gcc常用参数)