GCC编译器

GCC编译器

       GCC是一个用于linux系统下编程的编译器。对于linux嵌入式系统开发来讲是一种最广泛的工具。linux

      gcc除了编译程序的功能外,还含其余相关工具。它能把易于使用的高级语言编写的源代码构建成能在编程

计算机直接执行的二进制代码。在linux下最经常使用的是用于编译程序。  工具

         GCC支持的体系机构有40余种,常见的有x86系列、ARM、Power PC等,同时还能运行在不一样的操调试

做系统上,如Linux、Solaris、Windows等。   GCC除了支持C语言外,还支持多种其余语言,如C++、开发

Ada、Java、Objective-C、FORTRAN、Pascal等。  编译器

1.gcc使用语法:io

    GCC 【option】【filename】···                                                                                                           编译

其中option为gcc使用时的选项(参数),filename为用gcc处理的文件名class

2.gcc所遵循的部分约定规则:     test

 .c为后缀的文件,C语言源代码文件;

   .a为后缀的文件,是由目标文件构成的档案库文件;

 .C,.cc或.cxx 为后缀的文件,是C++源代码文件;

   .h为后缀的文件,是程序所包含的头文件;

 .i 为后缀的文件,是已经预处理过的C源代码文件;

 .ii为后缀的文件,是已经预处理过的C++源代码文件;

 .m为后缀的文件,是Objective-C源代码文件;

    .o为后缀的文件,是编译后的目标文件;

 .s为后缀的文件,是汇编语言源代码文件;

 .S为后缀的文件,是通过预编译的汇编语言源代码文件。

3.gcc编译器的执行过程                                                                                                                            

      使用gcc由C语言源代码文件生成可执行文件的过程:预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

(1)预处理:完成源代码中的宏和include展开工做      gcc -E test.c -o   test.i                         

(2)编译:把预处理后的结果编译成汇编代码       gcc -S test.i   -o test.s                                      

(3)汇编:把编译的结果汇编成目标代码模块           gcc -c test.s   -o test.o                          

(4)连接:把多个目标代码模块连接成生成一个大的目标模块,获得可执行文件      gcc   test.o -o test  

以上过程当中的test.c为C源代码,test为可执行文件。

4.gcc经常使用的模式 

          GCC经常使用的两种模式是:编译模式和编译连接模式。                                                                 

(1)gcc -o test   test.c     此过程为由C源代码(test.c)直接编译生成可执行文件(test)             

(2)gcc -c test.c     此时默认生成名为test.o的目标文件                        

或本身指定输出文件名称即:gcc -c   test.c -o mytest.o      此时生成的目标文件名为mytest.o     

此过程当中由源代码(test.c)编译生成的目标文件test.o或mytest.o虽然也是机器代码可是不可执行。

(3)多个源文件生成一个目标文件时的gcc模式                                                                          

      gcc -o test   first.c   second.c   third.c 

5.gcc编译器的经常使用选项

       -x langage 标示源文件所用的语言                     

    -x none    把上面的 -x langage都关掉        

      -c   把源文件编译成目标代码,不作链接                  

   -S 把源文件编译成汇编代码,不作汇编和链接      

    -E    输出预处理结果,不进行编译、汇编、链接        

     -o file   指名输出名为file                                

     -v 把整个编译过程的输出信息都打印出来     

   -C 同-E参数配合用,让预处理结果把注释保留,方便读取   

    -g 把调试开关打开,让编译的目标文件有调试信息    

    -I dir 宏include须要搜寻的目录dir                  

      -L dir 搜寻库文件(*.a)的路径dir                    

     -Wall 发出gcc能够提供的全部有用的警告信息

相关文章
相关标签/搜索