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 项目产生的分支。