Кросс-компиляция Qt в России

в 21:10, , рубрики: c++, qt, qt creator, qt5, Программирование, Разработка под Linux, разработка под windows, санкции, установка приложений

Предисловие

Как Вы возможно знаете на территории РФ более недоступен 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 к сборкам, аналогично как если бы была статическая компиляция.

Пути к сборкам: <mxe root>/usr/bin/<Build architecture>

Подробнее о привязке - можете посмотреть видео с YouTube (специально начало пропустил до привязки - по времени 16:12)

Итог

В итоге получим систему кросс-компиляции под Linux и Windows. А также совершенно легально (без VPN и прочем мути) установленный Qt Creator.

Послесловие

Изначально делал для себя, но метод очень понравился, поэтому решил поделиться. Если есть вопросы/предложения - пишите комментарии.

Спасибо за внимание!

С уважением,

Alrott SlimRG

Автор: Alrott SlimRG

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js