Chcę skompilować krzyżowo biblioteki Qt (i ostatecznie moją aplikację) dla docelowego systemu Windows x86_64 przy użyciu hosta Linux x86_64. Czuję, że jestem blisko, ale mogę mieć fundamentalne niezrozumienie niektórych części tego procesu.
Zacząłem od zainstalowania wszystkich pakietów mingw na moim komputerze Fedora, a następnie zmodyfikowania win32-g++
pliku qmake.conf, aby pasował do mojego środowiska. Jednak wydaje mi się, że utknąłem z niektórymi pozornie oczywistymi opcjami konfiguracyjnymi dla Qt: -platform
i -xplatform
. Dokumentacja Qt mówi, że -platform
powinna to być architektura komputera hosta (na którym kompilujesz) i -xplatform
powinna być platformą docelową, dla której chcesz wdrożyć. W moim przypadku ustawiam -platform linux-g++-64
i -xplatform linux-win32-g++
gdzie linux-win32-g ++ jest moją zmodyfikowaną konfiguracją win32-g ++.
Mój problem polega na tym, że po wykonaniu konfiguracji z tymi opcjami widzę, że wywołuje kompilator mojego systemu zamiast kompilatora krzyżowego (x86_64-w64-mingw32-gcc). Jeśli pominę tę -xplatform
opcję i ustawię -platform
na moją specyfikację docelową (linux-win32-g ++), wywoła kompilator krzyżowy, ale wtedy błędy, gdy znajdzie niektóre funkcje związane z Uniksem, nie są zdefiniowane.
Oto niektóre wyniki mojej ostatniej próby: http://pastebin.com/QCpKSNev .
Pytania:
Czy podczas kompilacji krzyżowej czegoś takiego jak Qt dla systemu Windows z hosta systemu Linux należy kiedykolwiek wywoływać kompilator natywny ? To znaczy, czy podczas procesu kompilacji krzyżowej nie powinniśmy używać tylko kompilatora krzyżowego? Nie rozumiem, dlaczego skrypt konfiguracyjny Qt próbuje wywołać natywny kompilator mojego systemu, gdy określę
-xplatform
opcję.Jeśli używam cross-kompilatora mingw, kiedy będę musiał radzić sobie z plikiem specyfikacji? Pliki specyfikacji dla GCC wciąż są dla mnie tajemnicą, więc zastanawiam się, czy jakieś tło tutaj mi pomoże.
Ogólnie rzecz biorąc, poza określeniem kompilatora krzyżowego w moim qmake.conf, co jeszcze powinienem wziąć pod uwagę?