Frage

Ich bin die Aufgabe, die Portierung eine C ++ Vernetzung Anwendung Code-Basis von ganz einer Größe von Solaris auf Linux-Plattform zu übernehmen. Der Code verwendet auch Bibliotheken von Drittanbietern wie ACE. Die Anwendung, wenn geschrieben wurde zunächst nicht für eine mögliche Portierung in Zukunft geplant.

Ich mag einige Ratschläge und Anregungen bekommen, wie ich über die Aufgabe gehen. Was wäre die beste Methode zu folgen.

-Prabhu. S

War es hilfreich?

Lösung

"Es gibt nicht so etwas wie eine portable Anwendung nur Anwendungen, die portiert wurden"

Zuerst mit mit den gleichen Werkzeugen auf beiden Plattformen starten, wenn Sie können. I.E. wenn die Solaris-Version GCC und GNU wurde nicht geändert zu verwenden, etc machen, rate ich Ihnen diese erste zu ändern und die Solaris-Build erhalten zu arbeiten. Sie werden feststellen, dass Sie Compiler Probleme zuerst und nicht versuchen, beheben sie auf Linux zu beheben zur gleichen Zeit wie die Anwendung auf Port versuchen.

Zweitens stellen Sie sicher, alle die gleichen Bibliotheken auf jeder Plattform mit der gleichen Version zu bekommen. Ich glaube, Sie ACE für Linux zu bekommen. Stellen Sie sicher, dass die Bibliotheken zu dieser Version Arbeit auf Solaris. Dies wird Kompatibilitätsprobleme begrenzen.

Wenn Sie das getan haben, dann beginnt die eigentliche Arbeit.

Sie müssen jede Quelldatei einer nach dem anderen kompilieren und die Funktionen, die in Linux nicht verfügbar sind. Zuerst suchen Sie nach einem Ersatz, der in beiden Betriebssystemen verfügbar ist. Wenn es kein einfacher Austausch ist dann erstellen zwei Bibliotheken eines für Solaris und einen für Linux. Erstellen Sie Wrapper-Klassen oder Funktionen abstrahieren Inkompatibilitäten entfernt.

Wenn dies wie eine Menge Arbeit klingt -. Es ist

Andere Tipps

ACE ist ein Plus gibt, da es mehrere Plattformen ist. Sie müssen prüfen, wo und wie Sie Ihre Schriftgrößen verwendet werden. Wenn ACE_ * sind Grundtypen verwendet man einen Streifen dort schlagen, wie die tragbar sind, sonst würde ich durch eine Änderung der Solaris-Version in mit Multi-Plattform-Datentypen und Elemente starten (Verwendung ACE Einrichtungen, da Sie bereits haben, dass in place).

Wenn Sie Solaris nur externe Bibliothek verwenden, müssen Sie ein Äquivalent in Linux zu finden und einen Wrapper zu schreiben, so dass der Rest der Anwendung nicht wissen muss, was die Umsetzung verwendet wird.

Danach wird die Migration in Linux sollte einfach sein mit nur einer Codebasis. Sie sollten es durch vollständig kompilieren und testen.

Ich bin einverstanden mit dem, was David Allan Finch schrieb. Nehmen Sie den Anschluss einen Schritt zu einer Zeit. Darüber hinaus:

Kommen Sie von Solaris / SPARC und Solaris x86? Wenn es x86 ist, werden Sie keine Endian Probleme haben, aber wenn es SPARC ist, werden Sie brauchen, um Ihren Code zu untersuchen, um sicherzustellen, dass es keine Byte-Reihenfolge (Endian) Fragen.

Ist der Solaris-Code 32-Bit- oder 64-Bit? Sicherlich hält den Adressraum der gleiche zunächst.

Liste, was Ihre aktuellen externen Abhängigkeiten sind. Finden Sie, was diese unter Linux zur Verfügung stehen. Für diejenigen, die es nicht sind, müssen Sie einen Ersatz finden. Wenn die Verweise auf diese externen Abhängigkeiten hinter Funktionen oder Objekten nicht abstrahiert, Refactoring den Code, so dass es so ist. Dann die Abhängigkeiten ersetzen, so dass Sie die abstrahierende Funktionen mit dem Austausch implementieren können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top