Auf welchen Plattformen läuft C++?

6 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Windows Phone

Sprichst du von "C++.NET"? Das ".NET" musst du in diesem Fall unbedingt dazusagen.

".NET"-Programme (egal, welche Programmiersprache verwendet wurde) laufen unter Windows; bei Linux muss man das Programm "Mono" installieren, um ".NET"-Programme ausführen zu können.

Das ".NET"-System hat den Vorteil, dass eine .EXE-Datei ähnlich wie bei Java auf allen Plattformen, die das unterstützen, läuft; es gibt also keine spezielle Windows- oder Linux-Version von einem Programm, sondern nur eine Version für alle .NET-Fähigen Systeme.

also z. B. Ubuntu out of the Box kann mit C++ nichts anfangen.

Wenn du damit meinst, dass man "out of the Box" Programme compilieren kann:

Kein Betriebssystem kann dies mit Ausnahme einiger Linux-Distributionen, die bereits bei der "Standardinstallation" einen C- und C++-Compiler dabei haben. Bei allen anderen Betriebssystemen muss man den Compiler nachinstallieren.

C++ erstellte Programme lauffähig sind

Wenn du damit meinst, dass man mit einer .NET-Sprache geschriebene .EXE-Dateien auf dem System laufen lassen kann:

Das geht (ohne Zusatzprogramme wie Mono bei Linux) nur bei Microsoft-Systemen (Windows und Windows Phone), wobei bei Windows Phone eine Signierung durch Microsoft erforderlich ist.

Wenn du damit meinst, dass man eine "nicht-.NET" .EXE-Datei auf einem Betriebssystem laufen lassen kann:

Da gilt: Ein für Windows geschriebenes Programm läuft nur unter Windows, ein für Linux geschriebenes nur unter Linux und ein für OS X geschriebenes nur unter OS X.

Sofern du wissen willst, für welche Plattformen es C++-Compiler gibt:

Die meisten Windows-Programme sind mit C++ geschrieben worden. Bei Linux sind es C, C++ und Skriptsprachen, die verwendet werden. Unter OS X sieht es wohl so aus, wie unter Linux.

Man kann C++ auch für Microcontroller verwenden. Bei großen Microcontrollern wie der ATmega-Serie ("Arduino Uno") ist das eher möglich, bei kleinen Microcontrollern wie der ATtiny-Serie oder sogar der PIC10-Serie (mit nur 16 Bytes RAM) eher nicht.

... Android, iOS

".NET"-Programme bekommst du mit Sicherheit nicht auf diesen Plattformen zum Laufen.

Wenn du C++-Programme speziell für iOS schreiben willst, wäre es mit Sicherheit irgendwie mit Wrapper-Code möglich, compilierten C++-Code in Objective C-Code einzubinden. Das wird mit Sicherheit aber extrem kompliziert werden.

Wenn du C++-Programme speziell für Android schreiben willst, gibt es zwei Möglichkeiten: Die erste wäre über das NDK nativen Code zu erzeugen. Das hat den Nachteil, dass die Android-Apps nur auf Geräten mit bestimmtem Prozessor laufen.

Die zweite Möglichkeit für Android wäre ein Compiler, der C++-Code in Java-Bytecode umwandelt. Solche Compiler gibt es; vor kurzem allerdings nur kostenpflichtige, die auch nicht alle Features von C++ unterstützt haben (möglicherweise hat sich dies aber inzwischen geändert).

Auf Linux wird es wahrscheinlich nicht gehen.

diesen Satz werde ich mir merken!

Programme aller Programmiersprachen laufen auf allen Plattformen, wenn es dafür Compiler und Linker gibt.

Die "Erfinder" von Unix, das ist das große Vorbild von Linux (Android basiert übrigens auch auf Linux) haben ihr Betriebssystem in C geschrieben. C++ ist "nur" eine Weiterentwicklung von C. gcc, ist ein Werkzeug das mit Linux verheiratet und wurde so zum Standard eines jeden Linux-Systems. GCC nannte sich vor einiger Zeit noch "GNU C Compiler" und dieses Werkzeug beherrscht c++. Heute wird GCC als Abkürzung für "GNU Compiler Collection" benutzt.

Die Programmiersprache C gab es bereits, als Windows noch mit Fenster übersetzt wurde und auch c++ ist keine Microsoft-Erfindung.

Sie wurde ab 1979 von Bjarne Stroustrup bei AT&T als Erweiterung der Programmiersprache C entwickelt. *)

*) Quelle: Wikipedia C++

Noch Fragen?

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

martin7812  06.08.2014, 09:42
haben ihr Betriebssystem in C geschrieben

Ich habe genau die umgekehrte Abfolge im Kopf: Der erste C-Compiler soll unter Unix gelaufen sein.

Da C erst 1972 erfunden wurde, die erste Unix-Version aber bereits 1969 geschrieben wurde, kann die erste Unix-Version aber auf keinen Fall in C geschrieben worden sein.

Tatsache ist, dass die erste Linux-Version zum größten Teil in C geschrieben ist.

0
guenterhalt  06.08.2014, 12:14
@martin7812

beide, UNIX und C sind in der gleichen Firma entstanden. Firmen entwickeln immer eine Strategie und verkaufen nicht gleich die Werkzeuge, mit denen sie andere Dinge produzieren. So sind dann auch unterschiedliche "Geburtsdaten" nicht unüblich. Solche Fragen wie wann war eine Software schon ein Betriebssystem, wann ein Programm schon ein Compiler?

Intern werden Produkte verwendet, die eine Firma nicht zum Verkauf geplant hat, es aber dann doch verkaufen kann. So ist das Leben! Offiziell ist es dann aber manchmal anders.

0
martin7812  06.08.2014, 12:50
@guenterhalt

Ich habe irgendwo gelesen, die erste UNIX-Version sei komplett in Assembler geschrieben worden.

Der erste C-Compiler wurde - laut dem, was ich gelesen habe - speziell für das bereits existierende Betriebssystem UNIX entwickelt.

Wikipedia schreibt:

C wurde ... für die Programmierung des damals neuen UNIX-Betriebssystems entwickelt.

0
guenterhalt  06.08.2014, 19:56
@martin7812
Ich habe irgendwo gelesen, die erste UNIX-Version sei komplett in Assembler geschrieben worden.

Ganz richtig!

Das betrifft das "Ur-UNIX" , das war aber wohl nur auf der DEC-PDP7 lauffähig und ist bestimmt kaum noch mit dem heutigen UNIX vergleichbar. Das erste "portable UNIX" war, so lese ich gerade im "UNIX-Handbuch System V" , war (bis auf etwa 1000 Assembler-Zeilen ) in C umgeschrieben worden.

Diese C war aber auch noch nicht das ANSI-C.

Das ist genau das was ich oben sagen wollte. Beide wurden nahezu gleichzeitig entwickelt, weiterentwickelt , verbessert, angepasst.....

Es ist bistimmt Nun kann man sich streiten

0
TypusNormalus 
Beitragsersteller
 05.08.2014, 20:07

Nein danke, alle Fragen geklärt. Als du geschreieben hast, dass Android auch auf Linux basiert, musste ich mir gegen den Kopf schlagen, weil ich das eigentlich wusste xD

0
martin7812  06.08.2014, 07:37
@TypusNormalus

Das heißt allerdings noch lange nicht, dass man Linux-Programme unter Android laufen lassen kann:

Streng genommen basiert das Android-System ähnlich wie Java auf einer virtuellen Maschine, die wiederum auf einem Betriebssystem (meistens Linux; inzwischen gibt es auch eine Windows-Variante) läuft.

Das Linux ist allerdings sehr eingeschränkt; so hat es zum Beispiel keine Bildschirmausgabe und keine Tastatureingabe. Der Touchscreen wird bei Android-Geräten nämlich nicht vom Linux, sondern von der virtuellen Maschine angesteuert.

Ein Linux-Programm, das man auf einem Android-Gerät zum Laufen bringt (mittels NDK ist das möglich), hätte somit schon mal keine Bildschirmausgabe. In der Regel wird das nicht so sinnvoll sein!

0
guenterhalt  06.08.2014, 09:12
@martin7812
Das heißt allerdings noch lange nicht, dass man Linux-Programme unter Android laufen lassen kann:

Nein, schlimmer noch, "Linux-Programme" laufen nicht einmal unter Linux!

Es gibt keine "Linux-Programme" !

Programme werden für eine vorgegeben Hardware geschrieben. Es ist bestimmt schön, wenn man als Zwischenschicht auch noch ein Betriebssystem hat.

Jedes bereits übersetzte Programm benötigt auch die zugehörige Kernel-Version und die zugehörigen Bibliotheken.

Selbst dann, wenn das Programm im Quellcode vorliegt, kann nicht gewährleistet werden, dass es auch für eine andere Maschine erfolgreich übersetzt werden kann und dort auch noch läuft.

Bei der Frage von @TypusNormalus ging es aber nur um die Plattformen auf denen man mit c++ programmieren ( besser Quellcode übersetzen ) kann.

1
martin7812  06.08.2014, 09:53
@guenterhalt

Unter Linux (teilweise sogar zwischen Unix-Ähnlichen Betriebssystemen) ist die Quellcodecompatibilität (auf die ich eigentlich hinaus wollte) extrem gut. In sehr vielen Fällen läuft ein Programm, das für Linux/x64 geschrieben wurde, nach dem Neucompilieren auch unter MacOS X/PowerPC.

Worauf ich mit meinem Kommentar hinaus wollte, ist, dass das bei Android nicht geht; ein einfaches Neucompilieren eines existierenden Quellcodes, so dass eine Executable für Android-Geräte rauskommt, ist nicht möglich. Hier habe ich das Beispiel mit dem Display gebracht: Da dieses exklusiv von der virtuellen Maschine angesteuert wird, haben andere Linux-Prozesse nicht die Möglichkeit, Daten über das Display auszugeben.

Und wenn ich den Fragesteller richtig verstanden habe, will er u.A. wissen, ob er mit C++ Android-Apps schreiben kann.

0
tsiegleauq  11.08.2014, 11:41
@martin7812

Über das Display kannst du die Daten nicht ausgeben, über den Debugger schon, daher kann man durchaus behaupten, das C-Code auf Android lauffähig ist.

Im Übrigen laufen Java-Programme auf Android, meistens jedoch nicht 1zu1, einige Anpassungen sind noch immer nötig.

0

C++ läuft auf jedem noch so popeligen Rechner mit egal welchem Betriebssystem. Es kommt darauf an für welches System du den Quellcode kompilierst. Wenn du eine .exe Datei für Windows erstellst, kannst du diese unter Linux nicht abspielen. Du musst den Code für Linux kompilieren

Zu Linux s. z. B. http://de.wikipedia.org/wiki/GNU_Compiler_Collection

Eigentlich ist C++ der Standard für Software, sodass es auf allen Plattformen ab ca. 1990 kompilierbar sein dürfte.

Übrigens beruht Android auf Linux und iOS und OS X auf anderen Unix-ähnlichen Plattformen. Und C++ wurde soweit ich weiß zunächst für Unix entwickelt.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Ich will mich nicht zu weit aus dem Fenster lehnen, aber C++ Compiler gibt es für nahezu alle Betriebssysteme und Architekturen. Wie kommst du denn darauf, dass es auf Linux nicht gehen sollte?


TypusNormalus 
Beitragsersteller
 05.08.2014, 19:37

Nein ich meinte auf Linux läuft das nicht von Standard aus, also z. B. Ubuntu out of the Box kann mit C++ nichts anfangen. ABER ICH WEIß ES NICHT!! :D Ich dachte das immer :DD

0
KuarThePirat  05.08.2014, 19:44
@TypusNormalus

Was meinst du es kann damit nichts anfangen? Ja, der Kernel und viele Programme sind in C geschrieben, aber sobald du einen entsprechenden Compiler, z.B. g++ installiert hast, kannst du C++ Programme bauen und benutzen.

0