将应用程序从Solaris移植到Linux

问题描述:

我将负责移植从Solaris到Linux平台相当大的C++网络应用程序代码库。该代码还使用ACE等第三方库。最初编写的应用程序并未计划在未来可能的移植。将应用程序从Solaris移植到Linux

我想得到一些建议和建议,我如何去完成这项任务。什么是最好的方法要遵循。

-Prabhu。 S

“有没有这样的事,作为一个便携式的应用程序只有被移植的应用程序”

首先下手,利用这两个平台上相同的工具,如果你能。 I.E.如果Solaris版本没有被更改为使用GCC和GNU make等,我建议你先改变它,让Solaris构建工作。您会发现您将首先修复编译器问题,而不是试图在尝试移植应用程序的同时在Linux上修复它们。

其次确保您可以在相同版本的每个平台上获得所有相同的库。我认为你可以得到ACE for Linux。确保该版本的库适用于Solaris。这会限制兼容性问题。

一旦你完成了那么真正的工作就开始了。

您将需要一次一个地编译每个源文件,并找到Linux中不可用的函数。首先寻找可在两个操作系统中使用的替代品。如果没有简单的替换,则创建两个用于Solaris的库和一个用于Linux的库。创建包装类或函数以将不兼容性抽象出来。

如果这听起来像很多工作 - 它是。

由于ACE是多平台的,因此ACE是一个优势。您必须检查您的字体大小在何处以及如何使用。如果使用了ACE_ *基本类型,那么您正在创建一个条带,因为这些条目是可移植的,否则我会先将Solaris版本更改为使用多平台数据类型和元素(使用ACE工具,因为您已经具备了该类型)。

如果您使用的是任何仅限于Solaris的外部库,则必须在Linux中找到一个等价物并编写一个包装,以便应用程序的其余部分不需要知道正在使用哪个实现。

之后,只需一个代码库即可直接迁移到Linux。你应该完全编译和测试它。

列出您当前的外部依赖关系。在Linux上查找这些内容。对于那些不是,你必须找到替代品。如果对这些外部依赖关系的引用没有被抽象到函数或对象的后面,那么就重构代码。然后替换依赖关系,以便可以使用替换实现抽象函数。

我同意David Allan Finch写的东西。一步一个脚印。另外:

您是来自Solaris/SPARC还是Solaris x86?如果它是x86,那么您将没有endian问题,但如果它是SPARC,则需要检查代码以确保没有字节顺序(endian)问题。

Solaris代码是32位还是64位?当然保持地址空间最初一样。