目录
GCC通过后缀来区别输入文件的类别,GCC所遵循的部分约定规则。
GCC通过后缀来区别输入文件的类别,GCC所遵循的部分约定规则。
●以.c为后缀的文件,是C语言源代码文件。
●以.a为后缀的文件,是由目标文件构成的档案库文件。
●以.C、.cc或.cxx为后缀的文件,是C++源代码文件。
●以.h为后缀的文件,是程序所包含的头文件。
●以.i为后缀的文件,是已经预处理的C源代码文件。
●以.ii为后缀的文件,是已经预处理的C++源代码文件。
●以.m为后缀的文件,是Objective-C源代码文件。
●以.o为后缀的文件,是编译后的目标文件。
●以.s为后缀的文件,是汇编语言源代码文件。
●以.S为后缀的文件,是经过预编译的汇编语言源代码文件。
GCC的使用
GCC命令格式 : gcc [options] [ filenames]
部分选项说明如下。
●-x language filename 设定文件使用的语言,使后缀名无效。
例如: gcc -x c hello.cd //指定文件所使用的语言为c,虽然其后缀为.cd
●-x none filename: 让GCC根据文件后缀,自动识别文件类型。
例如: gcc -x c hello.cd -c none test.c //将根据test.c 的后缀名来识别文件,而指定hllo.cd的文件类型为c文件
●-c 只激活预处理、编译和汇编,也就是只把程序编译成obj文件(目标文件)。
例如: [root@localhost ~ ] #gcc c hello.c //生成 .o的obj文件: hello.o
●-S 只激活预处理和编译,也就是指把文件编译成汇编代码。
例如: [root@localhost ~ ] #gcc -S hello.c //生成.s的汇编代码,可以使用文本编辑器进行查看
●-E 只激活预处理而不生成文件,要把它重定向到一个输出文件里。
例如:[root@localhost ~ ] #gcc E hello.c >check.txt
●-o 制定目标名称,默认的时候,GCC编译出来的文件名是a.out。
例如:
[root@localhost ~ ] #gcc -o hello hello.c
[roo@locahlost ~ ]#gcc -o hlleo.asm -S hllo.o
●-pipe 使用管道代替编译中临时文件。
例如: gcc -pipe -o hello.exe hello.c
GCC执行编译工作的步骤:
1、预处理(预编译),生成i文件。使用预处理器cpp。
2、编译,将预处理后的文件转换成汇编语言,生成s文件。使用编译器egcs。
3、汇编,由汇编变为目标代码,生成.o文件。使用汇编器as。
4、链接, 链接目标代码,生成可执行程序。使用链接器ld。