Кросс-компиляция Qt в России
Предисловие
Как Вы возможно знаете на территории РФ более недоступен Qt. Также в этот момент мне потребовалось реализовать кросс-компиляцию своего проекта под разные ОС. В ходе реализации кросс-компиляции обнаружилось, что можно совершенно легально использовать Qt, да еще и реализовать кросс-компиляцию.
Windows 11
Используя метод проб и ошибок выяснилось, что наиболее хорошо подходит для данных целей Windows 11, т.к. под него есть X Server, причем абсолютно бесплатный. Также не может не радовать скорость работы WSL2 под данной ОС. Итак, не буду томить — переходим к реализации.
Установка WSL2 + X Server
Сразу оговорюсь, речь идет про системы на x64 архитектуре (Intel/AMD). На ARM тоже можно, но работоспособность не гарантируется.
Сперва рекомендую активировать WSL2, для этого можно выполнить команды PowerShell (напоминаю, что нужно запускать его от имени Администратора):
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Также скачаем и установим сам WSL2 с официального сайта Microsoft
После выполненных действий рекомендую перезагрузить PC, т.к. изменения серьезные.
Сделаем WSL2 основным WSL через PowerShell
wsl --set-default-version 2
Теперь можем установить Ubuntu из Windows Store
После запускаем и устанавливаем Ubuntu (данный процесс можете загуглить — там нет ничего сложного)
Затем поставим X Server, благодаря которой мы сможем запускать графические приложения Linux на Windows. Ссылка на Windows Store
Запустите Windows Subsystem for Linux (X Server) и дождитесь появления ввода окна команд — это требуется, чтоб X Server прописал все зависимости.
Ещё раз перезагрузим PC, т.к. опять же были внесены крупные изменения.
Установка Qt Creator
После перезагрузки открываем Windows Subsystem for Linux (X Server) и ждем появления окна ввода команд.
Активируем root доступ (да, можно все делать через sudo, но для новичков так проще)
sudo su
После устанавливаем Qt
apt-get update && apt-get install build-essential qt5-default qtcreator qtbase5-examples qtdeclarative5-examples git mesa-common-dev -y
(Код длинный, поэтому лучше копировать через Ctrl+A, Ctrl+C)
Выходим из root и запускаем Qt Creator
exit
qtcreator
Установка кросс-компилятора MXE
Да, вы уже можете писать приложения под Qt. Но все же они будут работать из под Linux. Чтобы иметь возможность компилировать под Windows — нужен кросс-компилятор.
Откроем Ubuntu терминал и скачаем MXE:
git clone https://github.com/mxe/mxe.git
Установим необходимые пакеты:
sudo apt-get update && sudo apt-get install autoconf automake autopoint bash bison bzip2 flex g++ g++-multilib gettext git gperf intltool libc6-dev-i386 libgdk-pixbuf2.0-dev libltdl-dev libssl-dev libtool-bin libxml-parser-perl lzip make openssl p7zip-full patch perl python3 python3-mako ruby sed unzip wget xz-utils python-is-python3 g++-multilib libc6-dev-i386 texinfo wine -y
(Код длинный, поэтому лучше копировать через Ctrl+A, Ctrl+C)
Перейдем в директорию mxe
cd mxe
И запускаем сборку x86 версии (можете пойти попить чайку — это займет 2–3 часа)
make qt5
И запускаем сборку x64 версии (можете пойти попить чайку — это займет 2–3 часа)
make MXE_TARGETS=x86_64-w64-mingw32.static qt5
После сборки — привязываем Qt к сборкам, аналогично как если бы была статическая компиляция.
Пути к сборкам:
Подробнее о привязке — можете посмотреть видео с YouTube (специально начало пропустил до привязки — по времени 16:12)
Итог
В итоге получим систему кросс-компиляции под Linux и Windows. А также совершенно легально (без VPN и прочем мути) установленный Qt Creator.
Послесловие
Изначально делал для себя, но метод очень понравился, поэтому решил поделиться. Если есть вопросы/предложения — пишите комментарии.
Спасибо за внимание!
С уважением,
Alrott SlimRG