Können Programme, die in c++ geschrieben überall laufen?
Ich weiß, dass für das ausführen von c++ auf Windows-Sie brauchen, um zu kompilieren, die speziell für Windows und das gleiche gilt für linux und...
Aber zum Beispiel, wenn ich kompiliere das Programm für Windows geschrieben, in der systemeigenes c++ kann ich es auf einem frisch installierten windows-pc? Ich meine, ohne Download visual c++ - Laufzeit-Bibliotheken, etc, kann ich nur kompilieren Sie es, sagen wir mal, windows neu installieren auf meinem computer, und führen Sie es ohne die Installation etwas anderes?
(Die Frage über die Verwendung von Windows als Beispiel, aber das gleiche kann getan werden, auf frisch installierten linux-Distribution? e.g Ubuntu)
Vielen Dank im Voraus.
Wenn Sie Gebäude das Betriebssystem Sie verwenden c++'s STD-oder c-standard-Bibliothek?
Es hängt von der run-time-Bibliotheken, die dein Programm verwendet
Ich meinte nur mit c++'s STD-oder c-standard-Bibliothek
Sie haben die Verknüpfung der standard-Bibliothek statisch. Sonst wird es nur funktionieren, wenn die version der standard-Bibliothek für Ihren compiler ist installiert in Ihrem Betriebssystem standardmäßig (Sie können nicht Sie verlassen sich auf, im Allgemeinen).
InformationsquelleAutor UnTraDe | 2013-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einzige Antwort ist "es hängt".
Gibt es viele Möglichkeiten, wie ein OS "laufen", ein Programm, viele Möglichkeiten, ein Programm zu bauen, und viele code eingebaut werden kann.
Ein Programm, dass verwendet nur die "standard-libraries" und dass links alle Bibliotheken statisch, braucht keine andere Abhängigkeit (in dem Sinne, dass alle die den code brauchen, ist in der binary selbst oder in OS-Bibliotheken, die -als Teil des Systems selbst - sind bereits auf dem system).
Aber:
statisch-link-standard-Bibliotheken (die sind wahrscheinlich in allen Programmen) aufblasen der Speicherverbrauch vieler Kopie der gleiche code. Das ist der Grund, Bibliothek, sind oft dynamisch gelinkt, aber dies erfordert eine "installation" der Bibliotheken als auch
Programme, verwenden Sie nur standard-Bibliotheken können nicht nur die Dinge, die sind irgendwie "üblich" (oder kann Häufig vertreten sind) in allen Systemen, so verlieren alle die Besonderheit, dass macht ein OS von einer anderen.
Gibt es "Plattformen", die - durch die Art Ihrer Peripherie - sind nicht dargestellt, einen in das andere: eine Kaffee-Maschine hat 12 Tasten und eine textuelle 2 Zeilen x 20 col-display. Ein PC hat eine Maus, eine Tastatur und eine Anzeige erreichen, dass auch 10'000 pixel Breite, Millionen von Farben. Ein tablet hat eine touch-Oberfläche, die ergreifen können mehrere Punkte gleichzeitig.
Können Sie sich vorstellen, ein Programm läuft, das gleiche auf alle diese drei Plattform?
InformationsquelleAutor Emilio Garavaglia
Nicht. Oft sind die Bibliotheken auf unterschiedlichen Systemen unterschiedlich. Wenn Ihr Programm mit einer GUI, dann werden Sie definitiv haben OS-spezifischen code, der ausgeführt wird nicht auf anderen Betriebssystemen.
Wenn Sie schreiben Sie ein C++ - Programm-Ausrichtung der g++ - compiler ohne GUI-code kann es immer noch einige OS-spezifischen code. Aber Sie sollten in der Lage sein, die Portierung mit minimalem Aufwand.
Wenn Ihr Programm verwendet nur stl-und stdio, dann wird er wohl tragbar sein. Zum Beispiel MS STL ::c_str () - Funktion funktioniert ein wenig anders als der von linux.
Sie sollten in Ordnung sein dann.
Aber muss ich irgendwelche änderungen an der source-code, wenn ich mit std::c_str bevor ich die kompilieren für windows, nach dem erstellen das Programm für linux?
Nicht so lange, wie Sie verlassen sich nicht auf die null-Indizierung und stattdessen rufen Sie die string-Länge-Funktion. Sie sollte keine Portabilität betrifft, es sei denn, Sie schreiben einen langen und komplizierten Programm.
InformationsquelleAutor Tony Velito
Für was es Wert ist, bei der Verwendung von MinGW mit statischen Verknüpfung der glibc und libc++ ist, ist Es sehr wahrscheinlich, dass Ihre C++ - Anwendung funktioniert auf jedem Windows-system '95 und höher, sofern Sie nicht ausdrücklich aktiviert Funktionen in der Windows-API nicht verfügbar ist, wie NT-features. Alle meine SDL-Anwendungen kompiliert für Windows 7 (zusammengestellt in 32 bit natürlich) funktionieren auf meinem '95-Computer.
Bei der Bereitstellung einer Linux-Anwendung, ist es am besten einfach liefern der Quelle plus eine configure-Skript oder makefile. Dadurch wird sichergestellt, dass der Benutzer die gültigen Abhängigkeiten für Ihre Anwendung. Sie könnten bereitstellen von Binärdateien zu bestimmten Paket-Manager, wenn Sie wollte obwohl.
InformationsquelleAutor Kaslai
Ja, die standard-Bibliotheken sind überall. Nur daran zu denken, die meisten Ihrer Programme, die Sie erhalten, sind geschrieben in C/C++. Nur Abhängigkeiten kommen, wenn Sie einige angegebene Bibliotheken wie winsock etc, also einige windows-Anwendungen sind unwahrscheinlich, zu arbeiten auf linux und Umgekehrt.
Ja, die Standard-Installation für so ziemlich jede consumer-OS wird auch eine Implementierung der C-und C++ - standard-Bibliotheken.
Naja, standard-Eingabe und Ausgabe identisch sind. Für eine Instanz, wenn es um das Lesen von Dateien, Assembler-code ist im Grunde das gleiche, nur interupt Vektoren sind unterschiedlich, so dass das kompilieren mit unterschiedlichen Ziel-OS ausgewählten arbeiten würde.
das bedeutet nicht, dass ein kompiliertes Programm mit VS2010 läuft auf einem frischen Windows XP. Die VS2010 runtime (die ist in der Tat, die C-und C++ - Laufzeit-Bibliotheken) unterscheidet sich von VS2008 runtime, die sich von VS2005 ist Laufzeit und so weiter. Diese Antwort ist falsch.
Eine ausführbare Datei für Intel x86-Prozessor wird von windows nicht auf einem Mac oder auf einem Windows-Rechner mit einem anderen Prozessor (es sei denn, der Prozessor kann das übersetzen x86-Anweisungen). Ausführbare Dateien enthalten in der Regel Prozessor-spezifischen Anweisungen.
InformationsquelleAutor Tomas Smagurauskas