mikrocontroller.net

Forum: PC-Programmierung Stand der Technik cross-platform (compiler, automation, integration, test, VM)?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Info (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Ich bastele gerade ein kleines C++ Programm mit Qt unter Windows 
(mingw).
Was ist gerade so gang und gäbe, um das auch für Linux(e) und MacOS zu 
bauen bzw. bauen zu lassen?

von Rolf M. (rmagnus)


Bewertung
1 lesenswert
nicht lesenswert
Info schrieb:
> Was ist gerade so gang und gäbe, um das auch für Linux(e) und MacOS zu
> bauen bzw. bauen zu lassen?

Wie meinst du das? Wenn du qmake zum bauen verwendest und auf die 
Nutzung von Winapi-Funktionen verzichtest, kann man es meist unverändert 
bauen.

von Info (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich meine: gibt es Dienste bzw. Software die aus meinem Quelltext 
Windows, Linux und OSX binaries baut?

Ich sehe gelegentlich bei Github schicke Icons mit schicken Buzzwords.
Ich hatte gehofft, dass es zum Thema eine Übersicht in wenigen Worten 
gibt.

Es würde mir also auch schon ein Link auf eine Zusammenfassung völlig 
genügen ("du machst dir dein XYZ image [a], lädst das bei [x] rauf, 
wartest n Tage  und kannst die binaries dann runterladen").

Der Aufwand wird nicht lohnen, aber ich wollte mal über den Tellerrand 
blicken...


https://de.wikipedia.org/wiki/Kontinuierliche_Integration
https://de.wikipedia.org/wiki/Continuous_Delivery
https://de.wikipedia.org/wiki/Testautomatisierung

von Frank E. (Firma: Q3) (qualidat)


Bewertung
-1 lesenswert
nicht lesenswert
Ich kenne heute 2 Systeme, mit denen man halbwegs zuverlässig für 
Multi-Plattform compilieren kann:

a) Java, wobei man bei jeder Lib ganz genau hinsehen muss, ob sie 
tatsächlich für alle angestrebten Plattfprmen finktionierenden Code 
enthalten

b) XOJO mit den MBS-Plugis. Kostet, aber funktioniert sehr zuverlässig.

von Christian M. (Firma: magnetmotor.ch) (chregu) Benutzerseite


Bewertung
-2 lesenswert
nicht lesenswert
Purebasic

Gruss Chregu

von Torben (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Du benutzt doch schon Qt, somit hast Du für drei Platformen (Win, Linux 
und Mac) die gleiche Codebase

von Oliver S. (oliverso)


Bewertung
3 lesenswert
nicht lesenswert
Prinzipiell klappt Cross-compile unter Linux für Windows problemlos. Du 
musst dir vermutlich eine passende Qt-Version dafür bauen, dann sollte 
auch das klappen.

Deine buzzword-Suche und Dienst-Vorstellungen lassen aber vermuten, daß 
das für dich einem größere Aufgabe wird.

Der Dienst, den du suchst, nennt sich Programmier-Dienstleistung. Du 
sagst denen, was du willst, und einige Zeit später bekommst du die 
fertigen Binaries. Voraussetzung ist natürlich die Überweisung eines 
passenden Geldbetrags.


Oliver

von Rolf M. (rmagnus)


Bewertung
4 lesenswert
nicht lesenswert
Ich hab den Eindruck, als ob die Antworten allesamt an der Frage vorbei 
gehen. Was ich verstanden habe: Er hat einen Quellcode mit Qt 
geschrieben und sucht jetzt einen Buildserver, der das automatisiert 
compiliert für alle seine Zielplattformen.
Es gibt verschiedene Dienste im Internet, wie z.B. gitlab, die sowas 
anbieten. Und es gibt Software-Pakete, um sich sowas selbst aufzusetzen, 
wie z.B.Jenkins oder Bamboo.

von Sheeva P. (sheevaplug)


Bewertung
1 lesenswert
nicht lesenswert
Info schrieb:
> Ich meine: gibt es Dienste bzw. Software die aus meinem Quelltext
> Windows, Linux und OSX binaries baut?

Zumindest für Linux-Binaries ist das auch unter Windows mit Docker 
relativ einfach. Der Trick ist: Du baust Dir ein Docker-Image mit den 
benötigten Buildwerkzeugen und -Libraries und dazu ein 
Entrypoint-Skript, das in das Verzeichnis mit Deinem Sourcecode wechselt 
und dort qmake aufruft. Dann mountest Du das Verzeichnis mit Deinem 
Sourcecode mit --volume beim Aufruf von "docker run" in den Container, 
und sobald dieser gestoppt ist, ist Dein Programm gebaut. Das 
funktioniert auch für verschiedene Distributionen und Versionen davon 
sehr gut.

Fortgeschrittene rufen anfangs am Ende des Entrypoint-Skripts am Ende 
noch ein "exec /bin/bash" auf, so daß nach dem Build eine interaktive 
Shell gestartet wird, um das gebaute Programm zum Beispiel mit ldd(2) 
darauf zu untersuchen, welche Libraries (Abhängigkeiten) es benötigt. 
Danach kann man diesen Teil ganz wunderbar durch den Bau 
distributionsspezifischer Pakete ersetzen, so daß ein Image zum Beispiel 
für den Bau von RPM-Paketen für RedHat, SuSE, CentOS und Fedora, und ein 
anderes Image für den Bau von Paketen für Debian und Ubuntu vorhanden 
ist.

Theoretisch müßte es sogar relativ easy möglich sein, das Programm mit 
weiteren Images bzw. Containern zu testen. Dazu bedarf es auf dem Host 
eines X-Servers wie VcXsrv und eines SSH-Clients, beides zusammen bietet 
MobaXTerm. Damit kannst Du Dich mit X-Forwarding auf einen 
OpenSSH-Server in einem laufenden Container verbinden, und dort dann 
Dein GUI-Programm aufrufen und nach Herzenslust testen. Zur 
Automatisierung solcher Tests bietet sich so etwas wie Autoit an.

All das hört sich viel komplizierter an, als es ist, aber wenn man alles 
einmal sauber durchgetestet hat und es dann einmal funktioniert, ist das 
sehr komfortabel und zudem portabel.

Irgendwo habe ich mal gelesen, daß man mit dem GCC im "Windows Subsystem 
for Linux" (WSL), das es als experimentelles(?) Feature unter Windows 
gibt, auch Linux-Binaries übersetzen lassen. Das kann ich mir gut 
vorstellen, denn die Pakete in diesem WSL sind ja ganz normale, native 
Ubuntu-Pakete, aber... naja, YMMV. ;-)

von Drahtverhau (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Ich mach grad was mit dotnet Core... Console lässt sich unter Windows 
und Linux auf dem raspberry ausführen... Auch Asp funktioniert auf 
beiden Systemen. Da ich nicht viel Ahnung von Linux habe war es trotzdem 
einfach dotnet auf dem raspberry zu installieren. Vielleicht hilft es.
Wenn ich es richtig verstanden habe geht mit dotnet c++, c#, vb und 
javascript

von Info (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Es gibt verschiedene Dienste im Internet, wie z.B. gitlab, die sowas
> anbieten. Und es gibt Software-Pakete, um sich sowas selbst aufzusetzen,
> wie z.B.Jenkins oder Bamboo.

Sehe ich mir an, danke.

Sheeva P. schrieb:
> Zumindest für Linux-Binaries ist das auch unter Windows mit Docker
> relativ einfach.

Linux läuft auf/unter Docker auf/unter Windows?
Also ein Linux kann ich auch booten oder als VM laufen lassen, aber da 
sieht's mit der Automatisierung und vor allem dem Sprung zu OSX 
schlechter aus.



Danke!

von Horst (Gast)


Bewertung
2 lesenswert
nicht lesenswert
Drahtverhau schrieb:
> Ich mach grad was mit dotnet Core... Console lässt sich unter Windows
> und Linux auf dem raspberry ausführen... Auch Asp funktioniert auf
> beiden Systemen. Da ich nicht viel Ahnung von Linux habe war es trotzdem
> einfach dotnet auf dem raspberry zu installieren. Vielleicht hilft es.
> Wenn ich es richtig verstanden habe geht mit dotnet c++, c#, vb und
> javascript

*megafacepalm

von Sheeva P. (sheevaplug)


Bewertung
0 lesenswert
nicht lesenswert
Info schrieb:
> Linux läuft auf/unter Docker auf/unter Windows?

Korrekt. Windows-Docker bootet in älteren Versionen eine Linux-VM unter 
VirtualBox, neuere Versionen booten ein "Moby Linux" (womöglich eine 
MS-Variante?) unter Hyper-V. Darin laufen dann die Docker-Container.

> Also ein Linux kann ich auch booten oder als VM laufen lassen, aber da
> sieht's mit der Automatisierung und vor allem dem Sprung zu OSX
> schlechter aus.

Just das ist ja mein Punkt: Du kannst das unter Windows automatisieren, 
mithilfe passender docker- bzw docker-compose-Konfigurationen. ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.