Я хочу перекрестно скомпилировать библиотеки Qt (и в конечном итоге мое приложение) для целевого объекта Windows x86_64 с использованием хост-компьютера Linux x86_64. Я чувствую, что я близок, но у меня может быть фундаментальное непонимание некоторых частей этого процесса.
Я начал с установки всех пакетов mingw на моем компьютере Fedora и затем изменения файла win32-g++
qmake.conf в соответствии с моей средой. Тем не менее, я, кажется, застрял с некоторыми, казалось бы, очевидными настройками конфигурации для Qt: -platform
и -xplatform
. Документация Qt гласит, что -platform
должна быть архитектурой хост-машины (где вы компилируете), а -xplatform
должна быть целевой платформой, для которой вы хотите развернуть. В моем случае я установил -platform linux-g++-64
и -xplatform linux-win32-g++
, где linux-win32-g++ - это моя модифицированная конфигурация win32-g++.
Моя проблема в том, что после выполнения configure с этими параметрами я вижу, что он вызывает мой системный компилятор вместо кросс-компилятора (x86_64-w64-mingw32-gcc). Если я опускаю параметр -xplatform
и устанавливаю -platform
в свою целевую спецификацию (linux-win32-g++), он вызывает кросс-компилятор, но тогда ошибки, когда он находит некоторые связанные с Unix функции, не определены.
Вот некоторые результаты моей последней попытки: http://pastebin.com/QCpKSNev.
Вопросы:
-
Если кросс-компилировать что-то вроде Qt для Windows с хоста Linux, должен ли когда-нибудь использоваться собственный компилятор? То есть, во время процесса кросс-компиляции мы не должны использовать только кросс-компилятор? Я не понимаю, почему Qt configure script пытается вызвать мой системный собственный компилятор, когда я указываю опцию
-xplatform
. -
Если я использую кросс-компилятор mingw, когда мне придется иметь дело со спецификационным файлом? Файлы спецификаций для GCC по-прежнему являются для меня загадкой, поэтому мне интересно, поможет ли мне какой-то фон.
-
В общем, помимо указания кросс-компилятора в моем qmake.conf, что еще мне нужно рассмотреть?