gcc/g++在执行编译的时候,只要分四个阶段 :
1、预处理阶段,完成宏定义和include文件展开等工作; [预处理器cpp]
2、根据编译参数进行不同程度的优化,编译成汇编代码,生成.s的文件 ; [编译器egcs]
3、用汇编器把汇编代码进一步生成目标代码,生成.o的文件; [汇编器as]
4、用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件; [链接器ld]
gcc常用编译选项:
-E 只运行C预编译器cpp,不生成文件
-S 只把文件编译成为汇编代码
-c 只生成object文件,不链接
-o 生成指定的输出文件
-g 生成可被gdb使用的标准调试信息
-IDIR 指定额外的头文件搜索路径DIR
-LDIR 指定额外的库函数搜索路径DIR
-lLIBRARY 指定链接时需要的其它函数库“ LIBRARY”
-w 不生成任何警告信息
-Wall 生成所有级别的警告信息
-shared 生成支持动态共享库的执行文件
-static 不支持动态共享库,把函数库内容静态链接到可执行程序中
-O0 不进行代码优化处理
-O,O1 进行一般优化,减少大小和时间
-O2 进一步优化,一般在内核编译时使用
-O3 较-O2进一步优化