对于嵌入式开发这种对空间要求比较苛刻的环境,对程序包的大小还是比较敏感的。一来, 可以节省空间。二来,在一定程度上可以减少页错误导致的载入载出,提升程序的性能。第三,对一些低速网络(比如:zigbee)连接的设备,提升OTA升级的效率。
可执行文件都是elf格式的, 文件都是由各个段组成的,对文件大小的优化就可以归结为各个段的优化。
第一,可以去掉执行时不需要的段,比如:release版本不需要调试信息、符号表等, 可以直接strip掉。 第二,还可以缩小一些段的内容,比如代码段。通过优化合并代码,减少重复代码。数据段,对于一些全局变量,定义的时候可以不进行初始化,在程序启动的时候初始化,使得这些全局变量放到bss段,不占用程序大小。只读的数据段,主要是一些字符串、const等不可变量。在发布的时候,通过宏控制删除大部分无用的调试信息,仅保留必要的错误日志的信息输出,这样可以减少只读数据段的大小。这个是单个文件的优化思路。
对于同时运行不同程序的平台,可以使用动态库,共享基础库。
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。