gcc工作的流程
第一步: 进行预处理
gcc -E hello.c
第二步: 生成汇编文件
gcc -S hello.i
第三步: 生成目标代码
gcc -c hello.s
注意:前三步-E、-S、-c未用-o指定生成得文件名时,会自动根据源文件名匹配
第四步: 生成可以执行文件
gcc hello.o -o hello
第五步: 执行
./hello
一步完成,直接将源文件生成一个可以执行文件,如果不指定输出文件名字, gcc编译器会生成一个默认的可以执行a.out
gcc -c hello.c -o hello
GG常用选项
选项 | 作用 |
---|---|
-E | 只进行预处理 |
-S(大写) | 只进行预处理和编译 |
-c(小写) | 只进行预处理、编译和汇编 |
gcc(不加选项,默认) | 进行预处理、编译、汇编、链接器,默认输出可执行文件a.out |
-o file | 指定生成的输出文件名为file |
-v / --version | 查看gcc版本号 |
-g | 生成可执行文件,进行了预处理、编译、汇编、链接器并包含调试信息 |
-On n=0~3 | 编译优化,n越大优化得越多 |
-Wall | 提示更多警告信息 |
-D | 编译时定义宏 |
在gcc编译时,有警告信息,默认编译器可通过且不显示警告信息
编译时显示所有的警告信息
gcc -Wall test.c
编译时将警告信息当做错误处理,有警告信息编译不通过
gcc -Wall -Werror test.c
测试程序(-D选项):
#include <stdio.h>
int main(void){
#ifdef DEBUG//如果定义了宏DEBUG,就执行下面的代码,没定义就不执行
printf("debug\n");
#endif
printf("hello word!\n", );
return 0;
}
(-D选项) 可用于调试,调试的时候就定义DEBUG,让调试信息输出,不调试时,不定义就不会输出
gcc test.c -DDebug
./a.out
debug
hello word!
g++与gcc用法相同