Устанавливаем на Ubuntu
sudo apt-get install cqtdeployer
или скачиваем cqtdeployer в виде .deb файла и устанавливаем
sudo dpkg -i CQtDeployer_1.6.2268.24847be_Linux_x86_64.deb
или
wget https://site.ru/package.run
chmod +x package.run
./package.run
Затем
cqtdeployer -bin prog -qmake ~/Qt5.12.12/5.12.12/gcc_64/bin -qmlDir ./
И получаем сборку нашей программы папка DistributionKit с каталогами:
Если появится ошибка:
Project error: Unknown module(s) in QT: qml quick
Устанавливаем qtdeclarative5-dev
sudo apt-get install qtdeclarative5-dev
и коллекцию компиляторов g++/GNU
sudo apt install build-essential
Если появилась ошибка
Info: Deploy …
Info: The targetDir option is not used. CQtDeployer will use default target dir :/home/ubuntu/Qt5.12.12/Examples/Qt-5.12.12/demos/prog/DistributionKit
Warning: Failed to set targets
Error: Failed to initialize targets or extra data!
Info: Use bin or extraData optins. And check input pathes.
Error: Deploy failed!
Error: The CQtDeployer fail to read configuration.CQtDeployer Failed to initialize targets or extra data
Устанавливаем разрешения для Ubuntu 20.04
sudo snap connect cqtdeployer:process-control
sudo snap connect cqtdeployer:removable-media
sudo snap connect cqtdeployer:system-backup
Вводим команду с targetDir:
cqtdeployer -bin prog -qmake ~/Qt5.12.12/5.12.12/gcc_64/bin -qmlDir ./ -targetDir ./
или переустанавливаем cqtdeployer, следующем образом
sudo snap install cqtdeployer —classic
Собираем программу для Qt Creator
cqtdeployer -bin prog -qmake ~/Qt5.12.12/5.12.12/gcc_64/bin -qmlDir ./
Если появится ошибка
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34′ not found (required by /opt/CQtDeployer/bin/CQtDeployer)
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29′ not found (required by /opt/CQtDeployer/lib/libDeploy.so)
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33′ not found (required by /opt/CQtDeployer/lib/libpe-parse.so)
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29′ not found (required by /opt/CQtDeployer/lib/libpe-parse.so)
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33′ not found (required by /opt/CQtDeployer/lib/libzip.so)
Проверяем установленные версии GLIBCXX
strings /lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
……………………..
……………………..
………………………
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH
Обновляем GLIBCXX командами
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get upgrade libstdc++6
sudo apt-get dist-upgrade
Проверяем
strings /lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
Видим обновление
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
……………………..
……………………..
………………………
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_DEBUG_MESSAGE_LENGTH
Опять вводим
cqtdeployer -bin prog -qmake ~/Qt5.12.12/5.12.12/gcc_64/bin -qmlDir ./
Видим ошибка
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34′ not found (required by /opt/CQtDeployer/bin/CQtDeployer)
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33′ not found (required by /opt/CQtDeployer/lib/libpe-parse.so)
/opt/CQtDeployer/bin/CQtDeployer: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33′ not found (required by /opt/CQtDeployer/lib/libzip.so)
Проверяем
strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC
Вывод
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
……………………..
……………………..
………………………
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_2.30
GLIBC_PRIVATE
GNU C Library (Ubuntu GLIBC 2.31-0ubuntu9.9) stable release version 2.31.
Из сообщения, следует, что Ubuntu поддерживает последнюю версию GLIBC 2.31, версии 2.31 и выше не поддерживает, поэтому необходимо обновить Ubuntu 20.04 на более новую версию или вместо пакета CQtDeployer_1.6.2268.24847be_Linux_x86_64.deb установить более старую версию.
И таким образом, программа будет работать вне ОС Ubuntu на другом компьюторе.
Для компилирования приложений под 32 разрядные системы, необходимо установить:
sudo apt-get install gcc-multilib g++-multilib
В .pro файл дописать:
QMAKE_LFLAGS+=-m32
QMAKE_CXXFLAGS += -m32