gcc编译器工作流程:preprocess(预处理),compilation(编译),assembly(汇编),link(链接)。
gcc最基本的使用方法: gcc [选项] [要编译的文件]
例:gcc hello.c 会生成a.out文件。
gcc的选项:
-o 文件名: 定义生成文件的名字,例:gcc hello.c -o hello
-c : 只编译不链接,会生成.h文件,例:gcc hello.c -c 生成hello.o文件
-S : 只编译,不执行汇编、链接工作,例:gcc hello.c -S 生成hello.s文件,可以查看源代码的汇编代码。
-E : 只进行预处理,例:gcc hello.c -E 但不会文件,而是直接将结果输出到屏幕。
-D宏名称: 定义宏,等效于在程序中使用#define 宏名称
-I 目录名: 将目录添加到程序头文件目录列表中. 例:gcc hello.c -I ./include
-L 目录名: 将目录添加到库文件的目录列表中. 例:gcc hello.c -L /usr/lib
-l库名: 链接时装载该函数库. 例gcc hello.c -L ./lib -lmylib
-static: 静态链接库文件
-g : 生成带有调试信息的文件,例:gcc hello.c -g 生成的文件可以用gdb调试
-v: 将编译过程中运行细节显示在屏幕上(错误输出stderr),可以将编译器的每步工作细节都展现出来。
-O : 对程序进程优化编译链接,但速度相对比较慢.
-O2 : 比-O选项还要好的优化编译链接,但速度相对比较慢.
-Wall: 生成所以警告信息
-w: 不生成任何警告信息