GCC 小记
GCC 一般有两层意思,广义是指 GNU Compiler Collection(即 GNU 编译器套装),狭义是指 GNU C Compiler(即 GNU C 语言编译器),在本文中,我默认大写的 GCC 指广义,小写的 gcc 指狭义。
使用 gcc 编译 C 语言源代码的一般格式如下:
1 | gcc test.c -o test |
常用参数
Linux下 gcc
命令常用的参数及其含义如下所示:
--help
:显示帮助信息-o
:指定生成的文件名,若不指定,则默认生成a.out
-E
:生成.i
格式的预处理文件-S
:生成.s
格式的汇编文件-c
:生成.o
格式的二进制文件-save-temps
:保留所有生成的中间文件-g
:生成必要的符号信息,为调试而用-ggdb
:生成可特供于 gdb 使用的调试信息-gstabs
:生成 stabs 格式的调试信息-Wall
:显示所有常用的警告信息,即 Warning all-m32
:指定生成 32 位程序-Os
:为减小代码大小而进行优化,即 Optimizers small-nostdinc
:不使用标准库-fno-stack-protector
:不生成用于检测缓冲区溢出的代码-I<dir>
:添加搜索头文件的路径-fno-builtin
:除非用__builtin_
前缀,否则不进行builtin
函数的优化
跨平台
为了在 Windows 中使用 GCC,诞生了 MinGW 项目,即 Minimalist GNU for Windows(适用于 Windows 的极简 GNU),它是将 GCC 编译器和 GNU Binutils 移植到 Win32 平台下的产物,又被称为 mingw32。另有可用于产生 32 位及 64 位 Windows 可执行文件的 MinGW-w64 项目,是从原 MinGW 项目产生的分支。