Pregunta

Estoy a asumir la tarea de portar una aplicación C ++ redes código base de un tamaño bastante de Solaris a plataforma Linux. El código también utiliza bibliotecas de terceros, como ACE. La aplicación cuando se escribe inicialmente no estaba previsto para una posibilidad de conservar en el futuro.

Me gustaría recibir algunos consejos y sugerencias en cuanto a cómo hago para la tarea. ¿Cuáles serían los mejores métodos a seguir.

-Prabhu. S

¿Fue útil?

Solución

"No hay tal cosa como una aplicación portátil sólo las aplicaciones que han sido portados"

En primer lugar empezar con el uso de las mismas herramientas en ambas plataformas, si es posible. ES DECIR. si la versión de Solaris no se ha modificado para utilizar GCC y GNU hacen etc, yo le aconsejo que cambie este primero y obtener la acumulación de trabajo Solaris. Usted encontrará que va a solucionar los problemas del compilador primero y no tratar de solucionarlos en Linux al mismo tiempo que tratar de puerto de la aplicación.

En segundo lugar asegúrese de que puede conseguir todas las mismas bibliotecas en cada plataforma en la misma versión. Creo que se puede obtener ACE para Linux. Asegúrese de que las bibliotecas de esa versión de trabajo en Solaris. Esto limitará los problemas de compatibilidad.

Una vez que haya hecho eso a continuación, comienza el verdadero trabajo.

Usted tendrá que compilar cada archivo de origen de uno en uno y encontrar las funciones que no están disponibles en Linux. En primer lugar buscar un reemplazo que está disponible en los sistemas operativos. Si no existe un sustituto simple entonces crear dos bibliotecas, una para Solaris y uno para Linux. Crear clases o funciones de contenedor para abstraer las incompatibilidades de distancia.

Si esto suena como un montón de trabajo -. Es

Otros consejos

ACE es un plus allí, ya que es multiplataforma. Debe comprobar dónde y cómo se utilizan los tamaños de letra. Si se utilizan ACE_ * tipos básicos que está golpeando una racha allí, como los que son portátiles, de lo contrario me gustaría empezar por cambiar la versión de Solaris en el uso de tipos y elementos de datos multiplataforma (uso de las instalaciones de la ECA, puesto que ya tiene que en su lugar).

Si usted está usando alguna única biblioteca externa Solaris, tendrá que localizar un equivalente en Linux y escribir un envoltorio de modo que el resto de la aplicación no necesita saber qué se está utilizando la aplicación.

Después de eso, la migración a Linux debería ser sencillo con una sola base de código. Usted debe recopilar y poner a prueba a través de-totalmente.

Estoy de acuerdo con lo escrito por David Allan Finch. Tomar el puerto un paso a la vez. Además:

¿Vienes desde Solaris / SPARC o Solaris x86? Si se trata de x86, tendrá ningún problema endian, pero si es SPARC, necesitará examinar su código para asegurarse de que no hay problemas de orden de bytes (endian).

es el código de Solaris de 32 bits o de 64 bits? Ciertamente mantener el espacio de direcciones del mismo principio.

Lista de lo que sus dependencias externas son actuales. Encuentra lo que de éstos están disponibles en Linux. Para aquellos que no lo son, usted tiene que encontrar un reemplazo. Si las referencias a esas dependencias externas no se abstraen de distancia detrás de funciones u objetos, refactorizar el código para que sea así. A continuación, reemplace las dependencias, por lo que puede poner en práctica las funciones de resúmenes con la sustitución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top