所谓裁减,就是根据实际需求,去掉不用的功能,以达到减少体积的目的。通常,经过裁减的目标版本要比全版本的体积小,但是功能有所减少。Helix提供了丰富的裁减方式。首先,helix采用了插件体系,所以第一种简单的方法是在发布程序中去掉不用的插件。比如,不需要bmp图片格 式支持,可以去掉bmpfformat.so、bmprend.so文件,不需要作任何修改。其次,helix提供了丰富的宏定义来控制某些特性支持。比如,HELIX_FEATURE_VIDEO宏定义了是否支持视频,如果您打算用helix开发音乐播放器,不需要支持视频播放,就可以不定义这个宏。
删除不使用的插件来达到裁减的目的,没有什么需要深入探讨的,我们需要做的就是了解各个动态库的用途,然后决定是否包含在发布程序中。
下面我们探讨一下helix中的宏定义。helix中的宏定义大概分为三类:一类是定义目标平台,比如_ARM、_LITTLE_ENDIAN;另一类是定义目标操作系统,比如_LINUX、_UNIX;还有一类就是就是定义系统特性,比如HELIX_FEATURE_VIDEO、HELIX_FEATURE_VIDEO_CODEC_RV20。这些宏是在哪里定义的呢?我们在代码目录下可以找到形如xxx_xxx_ribodefs.h这样的文件,可以看到里面有很多宏定义,编译时就用到了这中间的宏定义。如果我们要去掉某个模块的宏定义,只要修改该头文件,然后在重新make该模块即可。如果我们需要对所有模块增加或去除宏定义呢?一个笨方法就是找出所有的xxx_xxx_ribodefs.h这样的头文件,一个个修改,然后重新编译。简单的方法就是找出xxx_xxx_ribodefs.h头文件是如何产生的,然后从源头上