将应用程序从Solaris移植到Linux

我将承担从Solaris到Linux平台移植相当大的C ++networking应用程序代码库的任务。 该代码还使用ACE等第三方库。 最初编写的应用程序并不打算在未来可能的移植。

我想就如何执行这个任务得到一些build议和build议。 什么是最好的方法要遵循。

-Prabhu。 小号

“没有像便携式应用程序那样的东西,只有已经移植的应用程序”

首先在两个平台上使用相同的工具,如果可以的话。 IE浏览器(如果Solaris版本没有被更改为使用GCC和GNU make等,我建议你先改变它,让Solaris构建工作。 你会发现你将首先解决编译器问题,而不是尝试在尝试移植应用程序的同时在Linux上修复它们。

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

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

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

如果这听起来像很多工作 – 是的。

因为它是多平台的,ACE是一个优点。 您必须检查您的字体大小在哪里以及如何使用。 如果使用了ACE_ *基本类型,那么您在那里会遇到一些问题,因为这些类型是可移植的,否则我会先将Solaris版本更改为使用多平台数据类型和元素(使用ACE工具,因为您已经具备这些功能)。

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

之后,只需一个代码库就可以直接迁移到Linux。 你应该通过编译和测试。

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

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

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

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