gcc 编译
hello.c->hello.i(预处理阶段,生成中间文件)->hello.s(汇编阶段,生成汇编文件)->hello.o(编译阶段,生成二进制代码文件)
->hello(链接阶段,生成可执行程序)
#预处理阶段,主要是将宏定义替换,条件编译、头文件包含,可以cat hello.i文件查看
gcc -E hello.c -o hello.i
#汇编阶段,将预处理文件生成为汇编文件,会汇编可以看懂hello.s
gcc -S hello.i -o hello.s
#编译阶段,将汇编文件编译为中间目录文件
gcc -c hello.s -o hello.o
#链接阶段,将中间文件链接为可执行文件
gcc hello.o -o hello
#可以直接跳过-E 、-S 、-C,直接编译可执行文件
gcc hello.c -o hello
常用gcc 编译命令
-c:只编译,不链接,生成.o目标文件
-o out_filename:输出指定文件名称,默认输出为a.out
-g:若使用gdb调试,则在编译时必须加上该选项
-O:对程序优化编译和链接,提高程序执行效率,但编译链接时慢
-O2:优化-O,但编译链接时更慢
-Wall:输出警告信息
-w:关闭所有警告
-Llib_dir:-L后面跟要链接的库名目录
-Iinclude_dir:-I后面跟编译所依赖的头文件目录
-llib_name:-l后面根据指定的库名