|
我已经从事嵌入式Linux系统开发多年,这些年中,除了自己开发Linux系统外,还需要将大量的程序移植到某个陌生的系统上。在信息高速发达的今天,这也是符合时代潮流的,毕竟要快速搭建一个稳定的系统,不利用社会上现有的、成熟的软件模块是不可能的。所以相信以后移植工作会越来越多。
那么移植软件是不是有理论可遵循呢?本人根据本人多年的经验,可以非常肯定的说:移植软件绝对不是一件体力活,它有高深的理论。
首先,移植软件的时候,需要对此软件所假定的操作系统环境有非常深入的理解,同时也需要对移植后,此软件的运行环境有非常充分的了解。比如将vxworks中的ISR,移植到Linux系统时,你需要知道,vxworks对运行环境的假定,然后知道Linux所提供的运行环境。在比如,将标准Linux环境下的应用程序移植到嵌入式Linux环境中,你需要对标准Linux环境和嵌入式Linux环境到底存在那些区别有非常深入的了解。
然后,在了解上述理论的前途下,你需要分析被移植软件,知道其对外的接口,同时知道如何操纵这些接口。比如,我在移植NTP的时候,发现NTP的核心已经完全符合要移植环境的要求,不需要对其核心进行分解,然后我就去分析此核心提供给用户的操作接口。分解提炼出此接口后,我通过自己写一套适合自己系统的简单程序来操纵此接口,从而非常容易的将NTP移植到我们的系统上,而且因为核心模块没有任何改动,所以移植后的软件工作非常稳定。
最后,要给大家几个关于软件移植非常有效的观念。第一个是:西瓜理论,就是说,我们尽量不要破坏被移植软件理论的完整性,就是说不要更改其核心部分,如果更改了其核心,就相当于将一个完整的西瓜切开,再想收拾起来就非常困难了。好了,先说这些吧,以后的我好好想想先。 |
|