Предисловие
Как Вы возможно знаете на территории РФ более недоступен 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
Комментарии (34)
up40k
04.06.2022 03:06+13Windows 11, т.к. под него есть X Server
Там целая отдельная виртуалка с Wayland и пробросом памяти в видеокарту (который работает вот уже год кое как, но надежда есть; в софт рендере на Intel встройках шустрее, чем с нативным ускорением, но с более ранними драйверами вообще только софтверно работало, так что не со стороны MS, так хоть со стороны интела прогресс есть; с видеоускорителями других производителей - вариативно, но софтрендер на современных CPU работает прям хорошо, если не работаете с графикой).
Также скачаем и установим сам WSL2 с официального сайта Microsoft
Теперь можем установить Ubuntu из Windows Store
wsl --install и wsl --update чем не угодили?
Затем поставим X Server, благодаря которой мы сможем запускать графические приложения Linux на Windows. Ссылка на Windows Store
Зачем вы ставите превью, да еще из стора (у версии которого есть свои ограничения) поверх системного компонента? Оно всё доступно в стабильном релизе. Сам wslg обновляется сейчас крайне редко и коммиты не несут каких-то особых новшеств, какие конкретно преимущества даёт превью?
Ещё раз перезагрузим PC, т.к. опять же были внесены крупные изменения.
Вы уверены?
sudo su
sudo -i
В остальном - не погромист, не могу подсказать, но подготовка окружения у вас прям какая-то вымученная, так и веет авралом, бессонницей и литрами кофе. Простите, если чем-то задел, но со своими инструментами, особенно для подготовки статьи сюда, можно было познакомиться ближе.
SlimRG Автор
04.06.2022 12:03+1В остальном - не погромист, не могу подсказать, но подготовка окружения у вас прям какая-то вымученная, так и веет авралом, бессонницей и литрами кофе. Простите, если чем-то задел, но со своими инструментами, особенно для подготовки статьи сюда, можно было познакомиться ближе.
Ох, как же Вы правы...
P.S. На мой взгляд такой конфиг работает шустрее и стабильнее, поэтому Preview.
RussianWarShip
04.06.2022 08:43+13Как Вы возможно знаете на территории РФ более недоступен Qt.
Если Вы о недоступности https://download.qt.io, то таки да. Но есть список зеркал https://download.qt.io/static/mirrorlist, в котором можно найти варианты без блокировки, например https://qt-mirror.dannhauer.de.
abagnale
04.06.2022 10:24+3О, сначала в марте только
account.qt.io
был заблокирован для адресов из России, насколько я помню, то есть нельзя было загрузить бинарники через установщик, а теперь действительно, не даёт также загрузить и снапшоты исходников сdownload.qt.io
.С бинарниками ещё можно было понять, компания тратит свои ресурсы на сборку, так что наверное могут решать, с кем делиться, но не давать грузить GPLv3 исходники - вот это интересный поворот.
Ну, к Git репозиторию доступ пока не закрыли:
$ git clone --depth 1 -b 6.3.0 git://code.qt.io/qt/qt5.git
me21
04.06.2022 11:32+2Так на download.qt.io вроде бинарники и лежат. Исходники, как вы сами сказали, вот они - клонируйте репозиторий.
Формально, как мне кажется, GPL не нарушена - доступ к исходникам для желающих есть.
CaptainFlint
04.06.2022 12:40+1Она так и так не была бы нарушена. Исходники обязаны предоставлять не всему миру, а только тем, кто легальным образом заполучил продукт. См., например, RHEL. И бинарники, и исходники доступны только владельцам подписок, и это вполне в рамках GPL.
abagnale
04.06.2022 13:06+2Исходники обязаны предоставлять не всему миру, а только тем, кто легальным образом заполучил продукт
Это верно, но вот последняя версия Qt, вышедшая до известных специальных событий, была 6.2.0, и пользователи из России получили её (и все предыдущие версии) легальным образом, а теперь вдруг потеряли доступ к загрузкам, так что здесь я не могу сказать, что условия лицензии соблюдены. Вот если бы только 6.3.0 (вышла в апреле 2022) была недоступна, то наверное да.
Но так как всё ещё доступно клонирование Git репозитория, то также нельзя и сказать, что условия лицензии нарушены. В конце концов, упаковка и хостинг снапшотов это тоже ресурсы компании, так что вероятно они могут распоряжаться доступом к ним по своему усмотрению.
Поэтому я и сказал, что это интересный поворот, а не то что требования GPLv3 нарушены.
CaptainFlint
04.06.2022 15:04+1последняя версия Qt, вышедшая до известных специальных событий, была 6.2.0, и пользователи из России получили её (и все предыдущие версии) легальным образом, а теперь вдруг потеряли доступ к загрузкам, так что здесь я не могу сказать, что условия лицензии соблюдены
Я не юрист, но не думаю, что лицензия обязывает предоставлять исходники ныне и присно и во веки веков. Бинарники были доступны — сорсы были доступны. Перестали предоставлять — всё, кто не успел, тот опоздал. Ну или просите у тех, кто успел, GPL разрешает делиться.
В конце концов компании и сайты могут закрываться, и что, подавать на них в суд, что они перестали выкладывать сорсы продукта, который там когда-то 25 лет назад лежал?
P. S. Я понимаю, что раз доступ к репозиторию открыт, то это всё не играет роли, лицензия в любом случае не нарушена. Просто обсуждаю гипотетическую ситуацию, если бы общедоступного репозитория не было совсем.abagnale
04.06.2022 15:35+2Да, ситуация любопытная. Конечно, если бы The Qt Company закрылась или у них бы временно сломался сайт, то вряд ли можно было бы предъявлять им претензии (по крайней мере, в первом случае), что они не дают исходники. Но компания работает, и сайт тоже функционирует, однако некоторые пользователи лишены доступа к загрузкам.
Вот я простой программист Иван город Тверь. Установил в январе на свой компьютер Qt 5.15.2, без исходников, только бинарники. Работаю над проектом своим, Qt использую под GPLv3, проект соответственно тоже под этой лицензией. И тут мне понадобились сейчас в июне исходники Qt 5.15.2, а на той странице, откуда я загружал установщик, их теперь загрузить нельзя (как и сам установщик). Пользователям с определёнными IP адресами можно, а мне нельзя.
Хорошо что на Хабре подсказали, что Git репозиторий ещё доступен, а то было бы совсем странно. Особенно в FSF бы удивились, наверное.CaptainFlint
04.06.2022 16:01+1Я тут не вижу принципиальных различий с другой ситуацией: пользуюсь я условной программой SuperMagic 1.2, которую когда-то скачал с сайта разработчика, и она была GPL. С тех пор программа развивалась, вышла версия 2.0 и сменила лицензию на проприетарную. А версию 1.2 с сайта удалили (и бинарники, и исходники). Так вот, ситуация эта неприятная, но я не думаю, что она нарушает GPL. То, что я не озаботился стащить исходник, когда всё было доступно, это моя головная боль, разработчик честно предоставлял такую возможность, пока программа распространялась.
Так же и тут. Qt перестали распространять всему миру, а стали с определёнными ограничениями. Неприятно, но это их продукт и они имеют полное право так делать. Пока продукт был доступен, его можно было скачать с исходниками. Теперь нельзя. Вернее, можно, но не всем (и не столь принципиально, по какому критерию идёт ограничение: по IP или по наличию платной подписки). Если пользователь когда-то успел скачать GPL-продукт, может продолжать пользоваться, но если в настоящий момент компания не предоставляет возможности получить этот продукт, то и исходники больше предоставлять не обязана. Я так вижу эту ситуацию с правовой точки зрения.
abagnale
04.06.2022 12:51Бинарники там тоже лежат, но я оттуда гружу в основном снапшоты исходников, чтобы не ждать по часу, пока все сабмодули инициализируются при клонировании через Git.
ZhilkinSerg
04.06.2022 09:21+2msys? vcpkg?
Sazonov
04.06.2022 10:50Ставил через vcpkg на винду qt6. Полёт отличный. Единственный нюанс - надо максимально короткий buildtree для сборки qtwebengine указать (и да, он очень долго собирается, но думаю что это из-за корпоративного антивируса).
kunitsyn
04.06.2022 11:09+6Легальность использования Qt и его тулзов не имеет ничего общего с тем, использовали вы VPN для скачивания или нет. Легальность определяется исключительно EULA: https://code.qt.io/cgit/qt/qt5.git/tree/LICENSE.QT-LICENSE-AGREEMENT Пункт 14.8 говорит нам, что нарушать экспортные санкции нехорошо, но в области программного обеспечения санкции против РФ ещё вроде как никто не вводил.
Ну и в самой РФ, насколько мне известно, VPN всё ещё легальны.
vikarti
04.06.2022 11:32А разве Qt не GPL'ная в том числе?
Или речь именно про честно купленную платную Qt которую не дают скачать?DerRotBaron
04.06.2022 11:48+3Да. Более того лицензионно чистая LTS ветка от KDE доступна без блокировок (пока РКН ее не заблочит снова в рамках ковровых блокировок)
SilverTrouse
04.06.2022 12:05+4Кто говорите о запрете Qt в России не все так однозначно. Qt - и в принципе все что у них опенсорсное мы можем спокойно скачать они просто запретили нам использовать прекомпилинные либы ( прекомпиленные ими)
Playa
04.06.2022 12:57+9Собрать под windows кросс-компилятором в виртуальной машине, находясь при этом под той же windows - это отдельный вид мазохизма
mapron
04.06.2022 13:43Ну чет да, я вот QtC под Windows собираю: clone / cmake / ninja, все, непонятно зачем кросскомпиляция :)
Visual studio компилятор в Community бесплатный (я думаю сборка Qt вполне соответствует Community лицензии)
theLastOfCats
05.06.2022 03:38+1Зачем ставить X Server если WSL умеет в GUI начиная с 22000?
https://github.com/microsoft/wslg
alxndrlsn
05.06.2022 14:47После устанавливаем Qt
Мы под Debian 10-11 устанавливали с помощью онлайн установщика незадолго до санкций Qt5.15+ по списку:
кроме перечисленных в статье ставили дополнительно: libgl1-mesa-dev gcc g++ make libssl-dev sqlite3 sqlitebrowser
требования под Qt5 для Debian X11: https://doc.qt.io/qt-5/linux.html
а также полезное ПО: preload lvm2 gedit numlockx p7zip-full p7zip-rar
maisvendoo
Если что - в Arch Linux с каждым обновлением прилетает свежий Qt. потому что в Linux-системах компиляцию на себя берут майтейнеры, а они как видно, остаются пока вне санкций.
А вот под виндой да, боль.... Так что спасибо за статью, забрал в закладки
Года три назад я собирал Qt из сорцов под винду для статической компоновки, пока не открыл для себя windeployqt.exe ) На i7-2600K выходило не слишком долго.
а на нынешнем моем i9-10900KF наверное выйдет чутка пошустрее)
SlimRG Автор
Ох, я собирал за 2 часа на системе с 2мя CPU (40 ядер на 3 Ггц всего) и 1024 Gb операвки. Не думаю, что у вас будет быстрее)
maisvendoo
терабайт оперативки... м-да, круто
sdore
А я-то вчитываюсь: со мной что-то не так, или правда так написано.
SlimRG Автор
так и есть