[gcc]常见编译开关
GCC 提供了许多编译开关(编译选项),这些开关可以用于控制编译过程的各种方面,如优化级别、调试信息、警告和错误处理等。
以下是一些常见的 GCC 编译开关:
- -o:指定输出文件名。例如,
gcc -o myprogram myprogram.c
将编译myprogram.c
并生成名为myprogram
的可执行文件。 - -Wall:激活所有警告。这有助于发现代码中的潜在问题。
- -Werror:将所有警告视为错误,这会导致编译器在遇到警告时停止编译。
- -O:优化代码。后面可以跟数字 0-3,其中 0 表示不优化,3 表示最大优化。例如,
-O2
是一个常用的优化级别。 - -g:生成调试信息。这对于使用调试器(如 GDB)进行调试非常重要。
- -std:指定遵循的 C 或 C++ 标准。例如,
-std=c99
表示遵循 C99 标准,-std=c++11
表示遵循 C++11 标准。 - -pedantic:发出 ISO C 和 ISO C++ 标准的所有警告。
- -DMACRO:定义一个宏。例如,
-DDEBUG
将定义一个名为DEBUG
的宏。 - -I:指定额外的头文件搜索路径。例如,
-I/path/to/include
。 - -L:指定额外的库文件搜索路径。例如,
-L/path/to/lib
。 - -l:链接一个库。例如,
-lm
表示链接数学库(libm.so 或 libm.a)。 - -shared:生成共享库。
- -static:静态链接,即使用静态库而不是共享库。
- -fPIC:生成位置无关代码,这对于创建共享库是必要的。
- -pthread:启用 POSIX 线程(pthread)支持。
这些只是 GCC 提供的众多编译开关中的一部分。GCC 的 man 页面提供了完整的编译选项列表和详细说明。要查看 GCC 的 man 页面,可以在命令行中输入man gcc
。