Kann ich ein c++ Programm einfach auf einem raspberry pi 2 laufen lassen?

5 Antworten

Nein, für gewöhnlich nicht ! Was ist das "Programmierte", was bedeutet das und was meinst du damit ? Du scheinst noch nicht lange zu programmieren und nicht mit den Begrifflichkeiten vertraut zu sein....


Das "Programmierte" gibts nicht, es gibt nur den Quellcode, den man verstehen und im Klartext lesen kann, und dann später das fertige übersetzte ( compilierte ) Programm als Binärcode ! Also was meinst du ?


Wenn man sich an gewisse Regeln hält, kann der Quellcode auch auf anderen Systemen und Plattformen verwendet werden.  C++ ist eine objektorientierte Programmiersprache und je nach dem, was man für ( vordefinierte ) Objekte, also Zutaten, für die Zubereitung verwendet, und ob es diese Objekte auch in dem anderen Systemen, den anderen C++ Compilern gibt, kann man den Code gleichfalls compilieren.  Verwendet man aber einen anderen Compiler, sind die Unterschiede fast immer groß genug, dass Änderungen im Quelltext gemacht werden müssen, damit das Programm überhaupt compiliert werden kann. Das kommt ganz darauf an, wie komplex und umfangreich ein Programm ist und welche Bibliotheken es verwendet.  Programme, die mit Micro$oft C++ ( VC, C# ) erstellt wurden, sind i.d.R. NICHT auf andere C++ Compiler übertragbar, bzw. nur dann, wenn man das von Anfang an zum Projektbeginn plant und strikt beachtet ( Cross-Compililing ) und auch das ist krumm, knifflig und problematisch. Micro$oft will, dass man nur Micro$oft verwendet und auch bei Micro$oft bleibt ! Vollständige Kompatiblität ist hierbei gar nicht beabsichtigt !


Das fertig compilierte Programm kann nicht (nur im Ausnahmefall )  auf einem anderen System gestartet werden, weil es i.d.R. nicht "binärkompatibel" ist ! Mit Tricks geht das oft auch, wenn man die Umgebungsbedingungen für dieses Programm auf dem fremden System schafft, z.B. mit einem Emulator, einer Virtualisierung oder Im Windows / Linux Fall mit der Wine-API.  Das sollte allerdings nicht die Regel sein und  ist Bastelwerk, nur eine Notlösung, nur für Testzwecke....


Ein C++-Programm, welches ursprünglich unter Windows entwickelt wurde, wird leider meist auch irgendwelche Windows-spezifischen Libraries nutzen, um z. B. GUI-Interaktionen zu machen.

Diese Windows-spezifischen Libraries stehen auf einem Linux-basierten System nicht zur Verfügung.

Wenn es aber um reine Algorithmik geht, und ausschließlich Standardbibliotheken (incl. natürlich STL) verwendet werden, dann kann man ein solches C++-Programm auch auf dem Raspi ans Laufen bekommen.

Entweder direkt auf dem Einplatinenrechner compilieren, oder per Crosscompile z. B. auf einem Desktop-Linux. Theoretisch könnte man auch auf einem Windows-Rechner gcc als Crosscompile-Umgebung aufsetzen. Aber ich vermute, dass Dir das zu komplex sein wird.

was verstehst du unter "das programmierte" ?

Unter Programm kann man ein Quell-Programm ( in deinem Falle einen C++ Quellcode ) aber auch ein für die jeweilige Maschine und das jeweilige Betriebssystem übersetztes Binary verstehen.

Beim Raspberry mit einem Linux-Betriebssystem gibt es schon 2 gravierende Unterschiede zu Windows. Das ist einmal der Prozessor mit deinen völlig unterschiedlichen Maschinenbefehlen ( ARM beim Pi, Intel/AMD  für den PC).
Es würde auch kein PC-Linux-BInary auf einem Linux-Pi laufen. Sollten aber die Quellen vorhanden sein, dann kann man eine PC-Linux-Quelle für einen ARM Kompilieren. Aber auch hier könnten unterschiedliche Bibliotheken schon Problembereiten.

Ganz schlimm wird es für Programme, die für Windows vorgesehen sind (editieren unter Windows ist etwas völlig anderes als schreiben für Windows) 

Bei Programmen, die keine Funktionen eines Betriebssystems  benutzen, dürften die geringsten Probleme entstehen.

Woher ich das weiß:Berufserfahrung – openSuSE seit 1995

Würde den Source Code auf den USB Stick laden und es nochmal unter Linux z.B. mit dem gcc kompilieren. Und darauf achten keine Betriebsystem spezifischen Libraries zu verwenden.

Ist die einfachst Variante. Als Pro macht man dann lieber nen Crosscompile ;) geht schneller Raspi2 ist immer noch lahm...

0

Wenn du Windowbibliotheken verwendest solltest du dir Wine mal anschauen.