gcc的编译流程分为四个步骤,分别为:
预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)
1)
预处理: (-E 只预处理 )
gcc –S hello.i –o hello.s
把对应的 *.c 文件内 include 的头文件全部加入到一个 *.i的预处理源码文件
2) 编译: (-S 只编译不汇编)
语法检查,词法分析
3) 汇编:
gcc –c hello.s –o hello.o
把代码转化成汇编代码
4) 连接:
gcc hello.o –o hello
把目标文件连接成执行文件(连接函数库)
静态连接: 把使用到的外部函数以代码的形式嵌入到执行文件中 (增加执行文件的体积,运行无需函数库文件)
动态连接: 只是保存外部函数的一些call信息,用于程序运行时候会叫外部函数。
(体积比静态要小,运行时候需要函数库文件支持)