GCC 是 GNU 编译器集合(GNU Compiler Collection)的缩写,是 Linux 下的一个 C 编译器。
$ gcc [选项] [源文件] [目标文件] [-o 输出文件]
GCC 主要选项:
| 选项 | 描述 |
|---|---|
| gcc -c | 编译源文件为目标文件,不进行链接 |
| gcc -D名称[=值] | 定义一个预处理器宏 |
| gcc -fPIC | 为共享库生成位置无关代码 |
| gcc -g级别 | 生成供 GDB 使用的调试信息 |
| gcc -I目录 | 添加头文件的包含目录 |
| gcc -l库 | 链接库文件 |
| gcc -L目录 | 在指定目录中查找库文件 |
| gcc -o 输出文件 | 将构建输出写入到输出文件 |
| gcc -O级别 | 优化代码大小和执行时间 |
| gcc -shared | 为共享库生成共享目标文件 |
| gcc -U名称 | 取消定义一个预处理器宏 |
| gcc -w | 禁用所有警告信息 |
| gcc -Wall | 启用所有警告信息 |
| gcc -Wextra | 启用额外的警告信息 |
编译 file1.c 和 file2.c 并链接到输出文件 execfile:
$ gcc file1.c file2.c -o execfile
运行输出文件 execfile:
$ ./execfile
编译 file1.c 和 file2.c,不进行链接:
$ gcc -c file1.c file2.c
编译 myfile.c 并包含调试信息,链接到输出文件 execfile:
$ gcc -g myfile.c -o execfile
编译 myfile.c 并启用警告信息,链接到输出文件 execfile:
$ gcc -Wall myfile.c -o execfile
编译 myfile.c 并链接位于 /user/local/math 的静态库 libmath.a,输出到文件 execfile:
$ gcc -static myfile.c -L/user/local/math -lmath -o execfile
编译 myfile.c 并进行优化,链接到输出文件 execfile:
$ gcc -O myfile.c -o execfile