Obwohl ich ein wenig Erfahrung habe, bin ich immer noch mit der Frage verwirrt, ob es notwendig ist, eine Anwendung zu installieren und/oder ein C++ - Programm oder C++ - Bibliothek unter Network File zu erstellen Von Maschinen gemeinsam genutztes System, das unterschiedliche Linux-Versionen (z. B. CentOS Release 4.7, Ubuntu 8.10), möglicherweise unterschiedliche Bit (z. B. 32-Bit, 64-Bit) und verschiedene Versionen des Compilers (z. B. gcc/g ++ 3.4.6 20060404 (Red Hat 3.4.6-10), gcc/g ++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2.), So dass die ausführbaren Dateien oder die Bibliotheksdateien unter diesen verschiedenen Maschinen verwendet werden können? Was sind die Prinzipien hier?Build-Programm und Installation von Software unter Network File System für verschiedene Maschinen
Zum Beispiel habe ich auf einem Netzwerk-Dateisystem eine ausführbare Datei von meinem C++ - Programm unter einem Rechner mit CentOS Release 4.7, x86_64 ad gcc/g ++ 3.4.6 20060404 (Red Hat 3.4.6-104). Ich finde überrascht, dass die ausführbare Datei unter einem anderen Rechner mit Ubuntu 8.10, x86_64 und gcc/g ++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2 verwendet werden kann. Auch alle gemeinsam genutzten Bibliotheken, die ich auf der ersten Maschine erstellt und von meinem Programm benutzt habe, beschweren keinen Fehler, wenn die ausführbare Datei auf dem zweiten Rechner läuft. Ich bin so besorgt, wenn das Ausführen der ausführbaren Datei, die auf einer anderen Maschine erstellt wurde, zuverlässige Ergebnisse liefert?
Ein anderes Beispiel, ich erinnere mich, eine ausführbare Datei, die auf einem 64-Bit-Rechner erstellt wurde, kann nicht auf einem 32-Bit-Rechner ausgeführt werden. Aber wie wäre es umgekehrt, läuft auf einer 64-Bit-Maschine eine ausführbare Datei auf 32-Bit-Maschine? Wie wäre es mit C++ - Bibliotheksdateien, die auf verschiedenen Bit-Maschinen erstellt und verwendet werden?
Wenn möglich, könnten Sie mich auf eine Referenz verweisen, wie eine Webseite, Buch, ..., die mit meinen Fragen zusammenhängen?
Danke und Gruß!
Habe ich Recht, dass dieses Kompatibilitätsproblem fast nie garantiert wird, ist der sichere Weg, eine Version für jede Maschine zu bauen? Zum Beispiel, wenn ich eine C++ - Bibliothek und zwei Maschinen für das NFS habe, muss ich es in ~/libraries/host1/mylibrary/und ~/libraries/host2/mylibrary/erstellen.Wenn mein C++ - Programm diese Bibliothek verwendet, wie schreibt man ein Makefile, das den aktuellen Rechner erkennt, und weist der Bibliothek den richtigen Pfad für -L und -I zu? – Tim
Nun, um die Garantie zu bekommen, müssen Sie Ihre Hausaufgaben machen und testen. Wenn Sie für jede Maschine bauen möchten, sollten Sie GNU autoconf und automake verwenden. Autoconf wurde für dieses Problem entwickelt. Am Ende erstellen und verwenden Sie ein Konfigurations-Skript, genau wie die meisten heruntergeladenen Linux-Quellpakete. Wenn Sie viele verschiedene Maschinen zu bauen oder Sie planen, dieses Programm an andere zu verteilen, ist dies der Weg zu gehen. Aber autoconf ist nicht trivial, wenn Sie es noch nie zuvor getan haben. Wenn Sie die Makefiles nur manuell schreiben möchten, können Sie Shell-Befehle verwenden, um Systeminformationen abzurufen. –