[Qt] Linux-Programm unter Windows kompilieren
-
Hallo,
wie kann ich mein Programm unter Windows für Linux kompilieren. Ich benötige einen Cross-Compiler das weiß ich, jedoch spuckte mir Google immer nur Ergebnise von Windows-Programm unter Linux kompilieren.
Kennt sich jemand damit aus?
Oder wäre es einfacher einfach Qt unter Ubutu zu installieren und dort einfach zu kompilieren?
-
halloQt schrieb:
Oder wäre es einfacher einfach Qt unter Ubutu zu installieren und dort einfach zu kompilieren?
Ja
-
Am Einfachsten ginge es mit einer VM, in der das Zielsystem läuft.
Ansonsten gibt es recht einfache Lösungen unter Linux, z.B. http://mxe.cc/ - wie hier in der Antwort beschrieben mit Qt: http://stackoverflow.com/questions/14170590/building-qt-5-on-linux-for-windows/14170591#14170591
-
Schonmal danke für eure Antworten
Ich habe nun Ubuntu in der Virtual Box eingerichtet, Qt installiert und g++ installiert. Soweit so gut, nur leider läuft keine GUI-Anwendung. Konsolenanwendungen laufen Problemlos.
Ich bekomme anscheinend 2 Linker-Fehler:
cannot find -lGL
collect2: error: ld returned 1 exit status
Muss ich da noch etwas an den Einstellungen machen? Mittels Googeln hab ich auch nur Threads mit Eigenverschuldung gefunden, jedoch hab ich hier das Sample-Projekt verwendet.
-
Dein Linker findet die OpenGL-Lib nicht. Hast du OpenGL installiert, auch die Dev-Pakete?
-
Genau das wars.
Dankeschön.
-
Ich mache es genauso. Im einer VM habe ich jeweils ein Mint Linux als 32bit und als 64bit Installiert. Dann mit folgenden Zeilen im Terminal die nötigen Dateien installiert:
- sudo apt-get install build-essential (gcc mit header und make-system) - sudo apt-get install libglu1-mesa-dev (für OpenGL unterstützung) - sudo apt-get install valgrind (für Programmanalyse im Qt-Creator)
Und dann einfach QT heruntergeladen und installiert. Der Compiler und Valgrind werden ohne Probleme gefunden und in den Qt-Creator eingebunden.
-
Danke @Netzschleicher. Ich hab es zu umständlich gemacht, aber bin auch ins Ziel gekommen. Beim nächsten mal verwende ich deine Variante.
-
Habe jetzt aber noch eine Frage.
Was muss der End-Benutzer dann noch per Terminal installieren, damit er mein Programm öffnen und ausführen kann?
-
Er muss alle Libs installiert haben, die dynamisch gelinkt wurden. Also alle aus der Ausgabe von "
ldd meinexecutable
". Wahrscheinlich ist alles standardmäßig schon installiert, bis auf vielleicht Qt. Wenn er KDE benutzt, hat er das auch auf jeden Fall schon.
-
Danke für Deine Antwort.
Ich habe jetzt mal den Befehl ausgeführt, den Du mir gegeben hast. Jetzt bekomme ich auf meinem Test-System (nicht das Developer-System) diese Ausgabe:
linux-gate.so.1 => (0xb778e000) libQt5Widgets.so.5 => not found libQt5Gui.so.5 => not found libQt5Core.so.5 => not found libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb7690000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7673000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c0000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb747d000) /lib/ld-linux.so.2 (0xb778f000)
Sagen wir mal er benutzt Ubuntu oder Mint, was muss dieser dann alles per
sudo apt-get install
installieren?
-
Bis auf Qt 5 sollte alles bei den meisten Linux-Systemen vorhanden sein.
Bei Ubuntu und Debian ab Jessie (aktuell Testing, bald Debian
wäre das dann damit erledigt:
sudo apt-get install qt5-default
Da Mint auf Ubuntu basiert, dürfte es dort genauso gehen.
-
Super, Dankeschön. Es funktioniert.