嵌入式之C语言编译器(五)

  

        我们在嵌入式的开发中经常会见到 ,那么它们两有何不同呢?GCC(GNU Compile Collection) 是指 ,如 C、C++、Java、D、Objective-C 等;而 gcc 则是特指 。那么 GCC 与嵌入式的关系是怎样的呢?多数嵌入式操作系统都是基于 GCC 进行源码编译,如 Linux、VxWorks 以及 Android 等。在实际的开发中,内核相关的开发用的是 gcc,而应用开发用的是 gcc/g++/gdc 等。

        下来我们来看看一个嵌入式开发中的高端大气上档次的词语:交叉编译。那么为什么会有交叉编译呢?在以往的嵌入式设备往往都是资源受限的,不可能直接在嵌入式上直接对处理器进行编程。那么此时的解决方案便是在开发主机(PC)上对源码进行编译,最终生成目标主机(嵌入式设备)的可执行程序。gcc 是如何进行交叉编译的呢?。下来我们来看看大型企业的嵌入式开发环境是怎样的,如下

嵌入式之 C 语言编译器(五)

        这个服务器集群相当于是我们自己公司的内部服务器,版本控制则是指由原来的版本经过我们一些代码的修改之后产生的新版本,用于各个版本的控制的。文件追踪则是指在服务器上面可以看到那部分的代码是具体由哪个人进行改写的,可具体到文件以及部分代码。我们来看看编译器是怎样的,如下

嵌入式之 C 语言编译器(五)

        编译器其实是由预处理期、编译器、汇编器以及链接器构成的。我们平时所说的由哪个编译器编译生成的文件,此时的编译器便是指广范围的编译器。那么狭义上的编译器则是指我们在平时所听到的生产一个某语言的编译器,此时的编译器则是指将具体的语言翻译成目标平台代码而已。我们来看看一个 .c 文件是怎样编译成 .o 文件的,具体步骤如下所示

嵌入式之 C 语言编译器(五)

        我们看到并不是我们所想象的直接一步就由 .c 文件直接编译成为 .o 可执行文件了,而是经过那么多的步骤才会生成最终的可执行程序的。那么此时便扩展一个问题,我们是如何理解“多语言混合开发”?我们在平时可能会听到多语言混合开发,是指由好几种语言混合进行一个应用程序开发的。那么为什么会产生这种混合的开发方式呢?比如说一个项目是由 C++ 完成的,但是其中的某些部分是可以通过 C# 完成的,此时精通 C++ 的人很少(相应工资就要的很高了),而 C# 的工程师由一大堆,我们就可以需要两个精通 C++ 的工程师和好几个 C# 的工程师来共同完成这个项目,达到以最小的开支完成此项目的效果。或者是你们小组内每个人擅长的语言方向不一样,为了发挥每个人的最大效率便可以采取这种混合开发的方式。下来我们来看看几种多语言混合开发的方式

        ,如下

嵌入式之 C 语言编译器(五)

        此方式是。行业典型的案例就是 .net framework,它便是由 C#、C++ 以及 VB 混合开发得到的,如下

嵌入式之 C 语言编译器(五)

       

嵌入式之 C 语言编译器(五)

        它是。典型的案例便是 QQ 了,如下

嵌入式之 C 语言编译器(五)

       ,如下

嵌入式之 C 语言编译器(五)

        它是。行业案例:Eclipse,如下

嵌入式之 C 语言编译器(五)

        下来我们来看看gcc关键编译选项。

嵌入式之C语言编译器(五)