【笔记】gcc编译流程
参考<<嵌入式Linux应用程序开发>>
首先给出一个最常见的程序hello.c
# include <stdio.h> int main(void) { printf("hello, this is embedded world"); printf("\n"); return 0; }
gcc编译的流程有4个步骤
1:预处理(对包含的头文件#include和宏定义#define,#ifdef等进行处理)
gcc -E hello.c -o hello.i
2:编译(gcc首先要检查代码的规划性,是否有语法错误等,以确定代码要实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言)
gcc -S hello.i -o hello.s
3:汇编(把编译生成的.s文件转换成目标文件)
gcc -c hello.s -o hello.o
4: 链接
gcc hello.o -o hello
函数库有静态库和动态库两种
静态库:
是指编译链接时,将库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般通常为”.a“。
动态库:
是指在编译链接时并没有将库文件的代码加入可执行文件中,而是在程序执行时加载库,这样就可以节省系统的开销。其后缀名通常为”.so“。
浙公网安备 33010602011771号