HowTo x-compile

parent c6d07bf3
Qt cross-compile auf Linux für Windows 32bit
--------------------------------------------
Anmerkung: Für win64 alle Arbeitsschritte mit %s/i686/x86_64/g
1) Toolchain und Libs holen | bauen
* Arch-Linux:
- aur/mingw-w64-freetype2-bootstrap
- aur/mingw-w64-cairo-bootstrap
- aur/mingw-w64-qt5-base
Die Bootstrap-Pakete sind nötig, um Dependency-Loops zu verhindern.
Wenn für einzelne Pakete die PGP-Signatur nicht geprüft werden kann,
dann ist der Schlüssel des Maintainers noch nicht bekannt. Die Schlüssel
können Manuell importieren werden mit:
gpg --recv-keys <key-id>
Wenn yaourt genutzt wird: Die Pakete sind relativ groß, yaourt räumt
aber /tmp nicht gerne auf, das ist dann irgendwann voll. Abhilfe
schafft das Anlegen eines Verzeichnisses ~/tmp/yaourt auf der Festplatte
und eine ~/.yaourtrc mit der Zeile:
TMPDIR=/home/<user>/tmp/yaourt
* andere Distros:
- Vielleicht hast du Glück und es gibt irgendwelche Pakete mit mingw
und win64-Libs.
- Laut Hörensagen im Netz könnte auch MXE[1] eine Lösung sein.
2) Konfiguration von Qt
* Im qtcreator:
Folgendes in dieser Reihenfolge tun:
- Menü "Tools"->"Options", section "Build & Run"
- Tab "Compilers":
- Click "Add"->"MinGW"->"C"
- Name: "win64 (i686-w64-mingw32)"
- Compiler path: "/usr/bin/i686-w64-mingw32-gcc"
- Click "Add"->"MinGW"->"C++"
- Name: "win64 (i686-w64-mingw32)"
- Compiler path: "/usr/bin/i686-w64-mingw32-g++"
- Tab "CMake":
- Click "Add"
- Name: "win64 (i686-w64-mingw32)"
- Path: "/usr/bin/i686-w64-mingw32-cmake"
- Tab "Qt Versions":
- Click "Add"
- Browse: /usr/i686-w64-mingw32/lib/qt/bin/qmake
- Version name: "win64 Qt %{Qt:Version} (lib)"
- Zum Schluss: Tab "Kits":
- Click "Add"
- Name: "win64"
- Compiler:
C: "win64 (i686-w64-mingw32)"
C++: "win64 (i686-w64-mingw32)"
- Debugger: "None"
- Qt version: "win64 Qt x.x.x (lib)"
- CMake Tool: "win64 (i686-w64-mingw32)"
Wenn nun ein Projekt im qtcreator geladen wird, dann ist im Hauptfenster
links unter "Projects" das neue Kit "win64" auswählbar (unter "Build & Run").
Danach noch links am Bildschirm-Icon Debug oder Release auswählen und bauen.
3) Deploy
- Verzeichnis anlegen
- die gerade gebaute .exe reinlegen
- benötigte Libs dazulegen (i686-w64-mingw32-objdump -x foobar.exe | grep "DLL Name")
- evtl. in wine die exe starten und weitere Libs ermitteln, die fehlen. Die dann ebenfalls dazulegen.
- Qt-Plugins dazulegen (cp -R /usr/i686-w64-mingw32/lib/qt/plugins/* .)
:)
[1] http://mxe.cc/
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment