VxWorks6.8提供了两套编译器:一套为diab系列编译器,为VxWorks传统的编译器;另一套为GNU系列的编译器,主要用来编译RTP工程。
RTP工程所使用的GNU系列编译环境可以使我们的基于嵌入式Linux的项目无缝地移植到VxWorks里面,在我们的实际使用中除了编译出来的文件大小比Linux的交叉编译工具链编译出来的文件大一倍左右外,基本上没什么区别了。刚开始的时候项目比较紧,基本上没有什么时间去优化这个问题,忙完一段时间后,项目告一段落,终于有时间要解决这个问题了,毕竟flash的成本也挺高昂的。
我们的代码是跨多个硬件平台、跨多个编译器和跨多个操作系统的,可以支持x86、ppc8548、ppc880、ppc8313、arm cortex a8、arm cortex a9等硬件平台、支持VC、VxWorks gnu系列编译器、Linux gcc系列编译器和支持xp、linux、VxWorks操作系统,就这样基本同一份代码,使用Linux的gnu交叉编译工具链编译出来的的ELF文件大小为3.5M左右,但使用VxWorks的gnu系列的交叉编译工具链并使用相同的编译优化选项编译出来的VXE文件(其实使用VxWorks gnu系列编译器编译出来的可执行文件也是ELF格式文件,但在本文中为了跟Linux中编译出来的可执行文件做区别,我称呼使用VxWorks gnu系列的编译工具编译出来的文件为VXE文件,因为它以VXE作为其后缀)竟然有7M,整整大了一倍,同样是gnu系列的编译工具,为什么