1.GCC的编译流程:
? ? ? ? (1)预处理:将源代码.c文件预处理成.i文件
? ? ? ? ? ? ? ? gcc -E test.c -o test.i将.c文件预处理后,vim这个文件得出如下:
????????????????
? ? ? ? ? ? ? ? 注:可以看出来预处理就是把头文件展开,宏定义进行替换
? ? ? ? (2)编译:将预处理文件.i文件编译成汇编文件.s
? ? ? ? ? ? ? ? gcc -S test.i -o test.s:就是检查一个语法错误如下:
????????????????
? ? ? ? ? ? ? ? vim test.s:得到汇编语言如下:
????????????????
????????????????
? ? ? ? (3)汇编:进行汇编处理将.s文件变为.o目标文件
? ? ? ? ? ? ? ? gcc -c test.s -o test.o:转换为二进制文件:
????????????????
? ? ? ? ? ? ? ? 注:此时还不能运行,说明还没有链接我们的库文件
? ? ? ? (4)链接:将.o文件链接生成可执行文件.exe文件
? ? ? ? ? ? ? ? gcc test.o -o test:链接库
????????????????