GCC是“GNU Compiler Collection”的缩写,从字面意思可以知道它是一个编译器集。gcc不止可以编译器c语言,还能用于c++,java,object-C等语言程序。但是在这里,我们的嵌入式学习中,目前只去关注gcc在C语言方面的编译功能。在Windows下比较流行的GCC移植版主要有三个。他们是MinGWCygwin#8203;和Djgpp。虽然,Djgpp是应用于DOS系统的,考虑到windows对DOS的兼容,所以也将Djgpp纳入其中了。
GCC编译器介绍:
GCC是用于Unix,Unix-like系统的编译器。不过,现在Windows下也出现了GCC的稳定移植版。这要感谢Internet上众多程序员的共同努力。
如今,在Windows下比较流行的GCC移植版主要有三个。他们是 MinGW,Cygwin和Djgpp。虽然,Djgpp是应用于DOS系统的,考虑到windows对DOS的兼容,所以也将Djgpp纳入其中了。
总体来说,MinGW,Cygwin和Djgpp各有特色,针对不同的应用场合,可以选择不同的移植版来满足需要。MinGW这个系列的移植,主要方向是让GCC的Windows移植版能使用Win32API来编程。而Cygwin的目标是能让Unix-like下的程序代码在Windows下直接被编译。至于Djgpp,则是想让DOS下也能用上GCC。
所以,对于开发人员不同的需求。选择合适的移植版会让工作变得轻松而高效。 。
gcc编译器使用方法
一、gcc编译流程
GCC编译器在编译一份C代码的时候,需要经过以下4个步骤:
预处理(preprocessing):对 .c 源文件进行预处理,生成 .i 文件。
编译(compilation):对 .i 文件进行编译,生成 .s 汇编文件。
汇编(assembly):对 .s 文件进行汇编,生成 .o 目标文件。
链接(linking):对 .o 文件进行链接,生成可执行文件。
二、gcc命令使用
2.1 gcc命令格式定义
2.2 gcc命令常用参数
2.2.1 基本参数
-E:仅对源文件进行预处理,不进行编译。结果直接输出到显示屏。
-S:对源文件进行预处理、编译,不进行汇编。结果以 .s 文件形式保存,与 .c 源文件同名。
-c:对源文件进行预处理、编译、汇编,不进行链接。结果以 .o 文件形式保存,与 .c 源文件同名。
-save-temps:保存编译过程中所产生的所有中间文件。中间文件名与 .c 源文件同名,后缀为 .i 、.s、.o
2.2.2 调试参数
-o:将任何类型的输出都存放至指定的文件中。
-Wall:打开编译器的警告标志,尽可能多的输出警告信息。强烈建议,编译时始终带上 -Wall 选项。
-Werror:将所有的警告当成错误处理,必须消除警告才能继续编译。
2.2.3 函数库参数
-llibrary:手动指定函数库library参与链接。库名为library,文件名为liblibrary.a或liblibrary.so
-Ldir:手动添加一个路径dir,用以搜索库文件(.a 或 .so 文件,即手动指定的函数库文件的所在目录)。
-Idir:手动添加一个路径dir,用以搜索头文件(.h 文件,即源码内#include要包含的文件的所在目录)。