gcc 能够支持多种 C 语言的变体,例如 K&RC 和 ANSIC;GCC 也是一个交叉平台编译器,能够开发不同 CPU 体系结构的软件;同时,GCC 也能够进行代码优化,提高执行程序的运行速度。g++是构建于 gcc 基础上的 C++语言编译器。
gcc 编译过程分为 4 个阶段:
预处理
编译
汇编
连接
最简单的 C 语言编译的例子:
用 vi 建立一个 hello.c 文件
$vi hello.c
输入字符 i,插入以下文本
/*
* hello.c
*/
#include
int main(void)
{
printf(“Hello World!\n”);
return 0;
}
最后输入字符
$gcc hello.c
如果没有错误 gcc 将生成默认的可执行文件 a.out,执行 a.out:
$./a.out
Hello World!
$
gcc 带有多达数页的编译选项,我们仅列出最常用的几项:
-o 可执行文件名 指定输出的可执行文件名,而不是默认的 a.out
-c 只编译生成.o 的目标文件,不连接生成可执行文件
-s 只编译生成.s 的汇编文件,不连接生成可执行文件
-g 在可执行文件中加入标准调试信息
-Wall 允许 GCC 发出警告型错误信息
选项使用的例子:
对以上 hello.c 使用-o,-g 常用选项重新编译、执行:
$gcc -g hello.c -o hello
$./hello
Hello World!
$
GCC 默认的扩展文件名:
.c C 语言源代码
.C .cc C++语言源代码
.i 预处理后的 C 语言源代码
.ii 预处理后的 C++语言源代码
.S .s 汇编语言源代码
.o 编译后的目标代码
.a .so 编译后的库代码