关于移植
移植三要素:
1 源码
2 交叉工具链
3 配置
下面一一说一下。
源码,请在移植前多google其资料,重点说一下,重点用google,不要baidu,保证你省40%的时间,了解其应用以及相关技术(这个很重要啊,因为有时你需要额外安装很多依赖的库,这个过程最好是大量而快速,不要迷恋其中任何技术细节)。
下载,必须要到官方网站下载,请不要在中国的任何站点下载,我知道很多网友很热心,到处上传源码,例如51CTO,CU,CSDN之类的,这样做的结果只会是限制你的视野让你更加无知。官网可以让你知道其历史版本,更多技术上的支持。
交叉工具链,如果有供应商支持的SDK包一般就很简单,configure,make,make install一般没问题。如果没有,可能需要多找点网络资料。可能有童鞋会觉得非常混淆,因为不同的内核和编译器之间的版本支持不一样,所以需要多读一下声明的文件,软件的版本有时真的不是越新越好,对于开源项目,2-5年内的版本如果能够满足需求个人觉得都是可以容忍的。
配置,这步看似简单,实际上要一步到位可能还得几个项目的积累。一般编译要移植的源代码,主要工作就是配置好交叉工具链在configure上面的位置即可,一般包括CC,AR,RANLIB,LIB,INCLUDE,这步顺利的基础跟之前所说的查找资料很有关。有时可能你会碰到没有configure的开源代码,没办法,直接修改Makefile吧。
最后无法跳过的编译
编译,如果是对新人来说,好运反而不好,你会容易丢失很多细节。
一般这个阶段出问题,无非就是交叉工具链路径不对,没有添加环境变量,源码上找不到*.h,*.c,这种得depend,可以直接修改相关代码的地方(备份好原来的压缩包啊),或者本来就是缺少了一下库的支持,这时只要适当添加对应的库即可。我也碰过一些需要打补丁的,大家可以多看源码的release notes,把相应的库的patch打进去即可。可能还会有各种神奇有趣的事情在前面等着大家去发现。
编译成功了,可以用file命令看看文件的体系架构是否正确。
入门的童鞋可能都会比较痛苦,linux体系知识混杂,每前进一步都是不容易的。学习到移植一般都有一定的基础了,祝君一路顺风。