Как запустить qt приложение linux
Пакетный выпуск приложений Qt под операционные системы Windows и Linux (сверхдетальный, супер понятный и всеобъемлющий, с картинками и текстами)
оглавление
При упаковке и публикации приложений Qt, после консультации с информацией от нескольких сторон и собственной практики, в этой статье будут обобщены вопросы упаковки и публикации программ Qt в различных операционных системах.
1) Среда выпуска
- win10 профессиональная версия
- QT5.11
- Qt Creator4.7.1
- MinGw5.3.0 32bit
2) Метод однократной версии
Выпущенное таким образом приложение Qt поместит исполняемое приложение .exe Поместите его вместе с библиотекой динамической компоновки, от которой она зависит, в папку, скопируйте эту папку на клиентский компьютер (также доступный без среды разработки Qt), откройте исполняемое приложение и запустите его. Однако недостатком такого релиза является слишком большой размер файла релиза.
а) выпустить программу для выпуска
Во-первых, вам нужно запустить программу, которую вы хотите выпустить под Qt Creator через выпуск
После в каталоге хранилища проекта найдите теневую папку версии выпуска.
После входа в папку опубликуйте программу .exe Исполняемый файл, скопируйте его в место, которое легко найти, например на рабочий стол. Возьмите меня в качестве примера, скопируйте его на рабочий стол и создайте новый под названием Chat Папка
Если вы дважды щелкните его, чтобы открыть его в это время, вам будет предложено, что ряд библиотек динамической компоновки отсутствует. Если вы заполняете эти библиотеки одну за другой, их будет сложно и слишком лениво искать. Так что его нужно упаковать
б) пройти windeployqt Bale
Если вы используете среду компиляции MinGw, то мы найдем файл с именем Qt5.11.2 for Desktop Инструмент командной строки
Дважды щелкните его, чтобы открыть и войти на рабочий стол, на котором хранятся исполняемые файлы. Chat Папка, используйте собственный инструмент упаковки Qt windeployqt Команда для упаковки библиотеки динамической компоновки в эту папку
После успешной упаковки вы обнаружите, что папка, созданная на рабочем столе, автоматически содержит библиотеку динамической компоновки и конфигурацию среды, требуемую программой.
3) Метод второй: публикация в автономном исполняемом exe-файле.
Как мы упоминали ранее, пакет файлов программы, выпущенной собственным методом Qt windeployqt, очень велик, и каждый класс имеет десятки мегабайт, что не способствует миграции, поэтому мы также можем использовать другие инструменты упаковки для интеграции библиотеки динамической компоновки.
Инструмент, который мы здесь используем, называетсяEnigma Virtual Box, Это интегрированное программное обеспечение для упаковки, само программное обеспечение не очень большое, всего несколько мегабайт размером, но, хотя воробей маленький и имеет все внутренние органы, он имеет все необходимые функции публикации, и посмотрите операцию, загрузите его на официальном сайте
б) упаковка
Следует отметить, что этот второй метод упаковки основан на первом способе упаковки через windeployqt Выше метода упаковки требуется первый шаг упаковочной папки. Итак, первый способ упаковки - это основной
Люди часто говорят no picture say jb , Итак, ниже приводится запись подробного изображения, откройте программное обеспечение Enigma Virtual Box, чтобы работать следующим образом
После завершения настройки выполните следующие действия.
В этот раз вы обнаружите, что в новой папке есть только один упакованный независимый исполняемый файл, который можно открыть двойным щелчком
Упакованное таким образом приложение намного меньше первого и представляет собой независимый исполняемый файл, который можно открыть напрямую, что намного удобнее.
4) Метод из трех упакованных в инсталляционный пакет для выпуска
Если вы хотите упаковать его в установочный пакет программного обеспечения для настольного компьютера, вам также понадобится инструмент упаковки для его достижения, потому что у блоггера пока нет этого требования, но также предлагаются два решения.
а) Упаковано инструментом Inno Setup
б) Упаковано с помощью Advanced Installer Tool
1) Среда выпуска
- deepin15.11
- Qt 5.10.1
- Gcc 64bit
2) Метод однократной посылки по скрипту
а) выпустить скомпилированный исполняемый файл
В Linux используйте Qt для компиляции и запуска в режиме выпуска, а затем скопируйте исполняемый файл в новое место, например в новое, созданное блоггером на рабочем столе здесь. pic Папка
б) Написание файлов сценария
Используйте команду, чтобы войти в каталог исполняемого файла, а затем создайте два сценария оболочки
pack.sh : Используется для копирования динамической библиотеки, связанной программой, в папку для упаковки. Команда записывается следующим образом
picClient.sh : Имя сценария должно совпадать с именем программы, которая будет упакована и выпущена. Имя, которое я ввел здесь, - picClient , Так названный picClient.sh . Содержание команды написано следующим образом, менять не нужно
в) Выполните скрипт
- Следует отметить, что последнее, что позволяет программе работать, - это скрипт, поэтому мы запускаем его напрямую. picClient.sh Этот скрипт обеспечивает успешное выполнение программы
г) Решите проблему xcb
Используйте вышеупомянутые шаги, чтобы упаковать папку, сжать ее в распакованный пакет и скопировать на целевой пользовательский компьютер для запуска.Если у другой стороны установлена среда разработки Qt, она может работать успешно, но если у другой стороны нет операционной системы Ubuntu, тогда Подскажет Не удалось загрузить плагин xcb Проблема, как правило, такого рода проблема заключается в отсутствии двух динамических библиотек, зависимых от среды.
Это две ссылки.Вам необходимо использовать команды для просмотра файлов сущностей двух файлов, соответствующих разным версиям Qt (прямое копирование файла ссылки недопустимо), войдите в среду установки Qt под lib Библиотека в целом /Qt5.xx.x/xx.x/gcc_xx/lib Этот путь после ввода найти и скопировать в папку упаковки
Затем переименуйте две найденные зависимые библиотеки для связывания файлов, чтобы облегчить поиск скриптов.
, а затем выполните сценарий запуска, он не появится xcb Если сообщается об ошибке, упакованный файл можно скопировать на любой клиент Linux и успешно запустить (😄).
3) Метод два - развертывание и упаковка через Linuxdeployqt
а) Загрузите linuxdeployqt
Есть инструмент упаковки, который поставляется с Qt под окнами windeployqt , И есть такой инструмент развертывания под линуксом, но он не встроенный, он скомпилировал программные файлы на открытом GitHub, просто назовите егоlinuxdeployqt скачать
После загрузки дайте ему разрешение на выполнение программы, а затем перейдите к /usr/local/bin/ Каталог, переименовав его в linuxdeployqt, после завершения можно ввести linuxdeployqt -version Проверьте информацию о версии, если выводится информация о версии, это означает, что установка прошла успешно.
б) Настроить переменные среды версии Qt
Откройте терминал и введите vim
/.bashrc Command, а затем добавьте следующий контент о среде Qt в конец файла, который в основном необходимо заменить вашим собственным путем установки Qt
Затем выполните source
/.bashrc Команда для немедленного вступления измененной команды в силу без перезапуска
в) развертывание пакета
Как и раньше, создайте новый каталог на рабочем столе для упаковки и скопируйте исполняемый файл, который будет выпущен через релиз
Напоминаем, что моя система слишком новая (Deepin 15.11😄), позвольте мне выбрать старую систему для использования linuxdeployqt , Посмотрев документацию, я обнаружил, что эта версия linuxdeployqt Поддерживаются только системы Linux ниже Ubuntu 16.04 и openSUSE 15.0
Я перешел на Ubuntu 14.1 и поменял его linuxdeployqt Version () также выполняется на этом шаге, отображается ошибка, указывающая, что файл значка не загружен.
Следовательно, вам необходимо удалить файл значка, созданный по умолчанию. default.jpg И повторно предоставьте один для этого logo.jpg В качестве примера, а затем сгенерируйте файл каталога default.desktop Переименуйте файл в picClient.desktop (Должно соответствовать имени исполняемого файла, который нужно упаковать), измените содержимое следующим образом
После завершения повторно выполнить linuxdeployqt picClient -appimage Команда, после того, как подсказка верна, она сгенерирует .AppImage Окончание файла
После успеха предоставьте ему разрешения и запустите его, чтобы успешно отобразить эффект.
нота:Приложения, упакованные с помощью linuxdeployqt, не поддерживают миграцию исходного кода с Qt4 на Qt5, потому что среда компиляции отличается, Я также собирался напрямую скопировать исходный код программы, которую я хочу опубликовать в Deepin, на свой uUbuntu14, чтобы повторно использовать Qt для компиляции и использования linuxdeployqt Запаковал и обнаружил, что решить не удалось cannot execute binary file Позднее выяснилось, что эта проблема является причиной моей версии Qt, одна из которых - Qt4, а другая - Qt5, поэтому я могу только переписать простую демонстрацию в Ubuntu, чтобы выпустить демонстрацию.
Файлы упакованы таким образом, потому что linuxdeployqt Это экологичный продукт с открытым исходным кодом, поэтому он поддерживает работу в различных дистрибутивах Linux, что очень удобно. Вы также можете попробовать (😄😄)
В данной статье мы рассмотрим, как правильно собрать все зависимости qt для вашего приложения, которое было собрано динамически.
- 1. Введение
- 2. Для начало немного теории
- 3. Зачем это нужно?
- 4. Теперь немного описания
- 5. Давайте рассмотрим пример
- 6. MyApp (main.cpp)
- 7. MyApp (main.qml)
- 8. Итог
Для начало немного теории
Зачем это нужно?
Существует несколько способов сборки приложений, основные из них это:
Статическая сборка.
Статическая сборка подразумевает создание бинарника, в котором будут слинковоны все необходимые ему компоненты. Другими словами все что нужно для его работы будет лежать в нем. Такой подход удобен для маленьких консольных приложений, у которых мало зависимостей, в противном случае размер конечного бинарника будет крайне велик.
Динамическая сборка.
Отличается от статической тем, что в бинарнике будут лежать только исходные тексты вашего приложения (размер бинарника будет минимальный), но при выполнении такого приложения ему понадобятся сторонние библиотеки, которые использовались при его написании.
Теперь немного описания
Console-QtDeployer — это простая утилита, аналогичная windeployqt и macdeployqt . Но в отличие от аналогов имеет куда более гибкий интерфейс (флаги запуска) и более высокую скорость работы, к тому же она поддерживает 2 платформы windows и linux а это значит что теперь мы сможете собирать зависимости под windows на Linux и наоборот.
Давайте рассмотрим пример
Для примера я написал простое qt приложение с использованием qml — MyApp.
MyApp (main.cpp)
MyApp (main.qml)
MyApp слинкована динамически, то есть для работы ему требуются библиотеки qt.
Если попробовать запустить приложение, сразу после сборки мы получим ошибку:
Из сходных текстов мы видим, что приложение зависит от GUI библиотек qt и библиотек qml. Поиск и сборка всех ресурсов (библиотек и плагинов) займет очень много времени.
Чтобы сэкономить время и силы, мы воспользуемся утилитой CQtDeployer (скачать можно здесь )
или установить в Snap Store
После выполнения данной команды, вы получите полностью готовое для работы приложение с готовым лаунчером, который настроит все необходимое окружение для работы вашего приложения на всех машинах под управлением Linux.
Давайте подробнее рассмотрим некоторые из параметров CQtDeployer:
После выполнения cqtdeployer у вас появится папка Distro c уже готовым приложением со всеми его зависимостями содержимое этой папки должно выглядеть примерно следующим образом:
- myApp.sh — скрипт запуска вашего приложения
- bin — папка с вашим бинарником
- lib — папка со всеми необходимыми зависимости вашего приложения
- plugins — qt плагины, необходимые для работы приложения
- qml — зависимости qml.
- translations — стандартные переводы qt.
Таким образом можно подготовить ваше приложения для упаковки в deb или snap пакет, после чего можно приступить к его распространению. Учитывайте, что после выполнения cqtdeployer, ваше приложение необходимо запускать с помощью sh скрипта, который настроит для вашего приложения необходимое окружение.
Для Windows все точно так же. только в консоли нужно будет писать не cqtdeployer а %cqtdeployer%
С каждым годом становится все больше операционных систем, и потому разработчикам все труднее удовлетворять потребности пользователей. Три самые популярные компьютерные платформы - Windows, Linux и Mac OS, а также три мобильные - Android, iOS и Windows Mobile - продолжают активно бороться между собой. А это значит, что качественное приложение должно работать на всех основных платформах.
Что такое Qt Creator
Qt Creator (не так давно имевший название Greenhouse) - это одна из самых распространенных кроссплатформенных IDE. Ее плюсы - удобство, быстрота работы, а также - свободность, так как это ПО с открытым исходным кодом. Поддерживаются такие языки, как C, С++, QML.
Программа была написана компанией под названием Trolltech, которая в полной мере выполнила цель создания среды - работу с графическим фреймворком Qt. Удобный графический интерфейс с поддержкой Qt Widgets и QML, а также большое число поддерживаемых компиляторов позволяют быстро и удобно создать свое кроссплатформенное приложение.
Главная задача этой IDE - обеспечить наиболее быструю кроссплатформенную разработку, используя собственный фреймворк. Благодаря этому разработчики получают прекрасную возможность не писать приложения нативно (т. е. отдельно под каждую платформу), а создать общий код, и, возможно, подогнать его под особенности используемых ОС.
Qt Creator также включает в себя утилиту Qt Designer, что позволяет обработать внешний вид окна приложения, добавляя и перетаскивая элементы (аналогично Windows Forms в Visual Studio). В качестве систем сборки используются qmake, cmake и autotools.
Установка Qt Creator
Итак, пора рассмотреть как установить Qt Creator. Если для Windows разработчики позаботились и сделали оффлайн-установщик, то в Linux 32-bit этой возможности не предусмотрено. Поэтому во время установки вам может потребоваться стабильное интернет-соединение (
20-30 минут). Для начала скачаем установщик:
После окончания загрузки переходим в папку с файлом, нажимаем правой кнопкой мыши и выбираем пункт "Свойства".
Теперь перейдем на вкладку "Права" и поставим галочку "Разрешить запуск этого файла в качестве программы".
Теперь нажимаем "Next".
Здесь необходимо выбрать существующий аккаунт или создать его. Данное действие необходимо для проверки лицензии (коммерческой или некоммерческой).
Нажимаем "Next".
Выбираем директорию, в которой будет находиться Qt. Важно, чтобы в пути не было кириллицы и пробелов!
В этом меню находится выбор компонентов. К примеру, можно выбрать установку инструментов для разработки на Android, или же исходных компонентов (это нужно для статической сборки, если кому-то это нужно - напишите в комментариях, и я напишу отдельную статью). Если Вы не уверены, нужны Вам эти компоненты или нет, оставьте их пока так - даже после установки Qt будет возможным удаление и добавление элементов.
В этом окне принимаем лицензию. Жмем "Next".
Если Вы готовы, начинайте установку. У Вас запросят пароль суперпользователя (sudo), после чего начнется скачивание и извлечение файлов. Альтернативный способ - установка через терминал. Для начала необходимо обновить список пакетов.
sudo apt update
Скачиваем и устанавливаем Qt:
sudo apt install qt5-default
Теперь установка Qt Creator:
sudo apt install qtcreator
И, если нужно, исходники.
sudo apt install qtbase5-examples qtdeclarative5-examples
Настройка Qt Creator
После окончания установки перезагрузите компьютер и запустите Qt Creator. Перейдите в меню "Инструменты" -> "Параметры".
Здесь следует рассмотреть несколько вкладок.
1. Среда - это настройка внешнего вида самой IDE, а также изменение сочетаний клавиш и управление внешними утилитами.
2. Текстовый редактор - здесь идет настройка внешнего вида, шрифтов и расцветки редактора.
3. C++ - подсветка синтаксиса, работа с расширениями файлов и UI (т. е. формами).
4. Android - здесь собраны пути к необходимым инструментам, а также в этом меню настраиваются подключаемые или виртуальные устройства.
Установка компонентов Qt Creator
Если вдруг так случилось, что Вы забыли установить какой-то компонент, или, наоборот, хотите его удалить, то на помощь придет Qt Maintenance Tool. Это инструмент, позволяющий управлять всеми компонентами Qt Creator.
Чтобы запустить его, перейдите в меню приложений, выберите пункт "Разработка" -> "Qt Maintenance Tool".
Выберите необходимый пункт (Удалить/добавить компоненты, обновить компоненты или удалить Qt). После выполните необходимые операции и закройте окно.
Работа с Qt Creator - первый проект
Ну что же, час пробил! Установка Qt Creator завершена. Пора сделать свое первое кроссплатформенное приложение на Linux, а затем скомпилировать его на Windows. Пусть это будет. программа, выводящая иконку Qt, кнопку и надпись, на которую по нажатию кнопки будет выводиться случайная фраза. Проект несложный, и, конечно же, кроссплатформенный!
Для начала откроем среду разработки. Нажмем "Файл" -> "Создать файл или проект. ". Выберем приложение Qt Widgets - его быстро и удобно сделать. А название ему - "Cross-Platphorm". Вот как!
Комплект - по умолчанию. Главное окно тоже оставляем без изменений. Создаем проект.
Для начала необходимо настроить форму - главное окно приложения. По умолчанию оно пустое, но это не останется надолго.
Перейдем в папку "Формы" -> "mainwindow.ui". Откроется окно Qt Designer:
Удаляем панель меню и панель инструментов на форму, нажав правой кнопкой мыши и выбрав соответствующий пункт. Теперь перетаскиваем элементы Graphics View, Push Button и Label таким образом:
Чтобы изменить текст, дважды кликните по элементу. В свойствах Label (справа) выбираем расположение текста по вертикали и по горизонтали - вертикальное.
Теперь пора разобраться с выводом иконки. Перейдем в редактор, слева кликнем по любой папке правой кнопкой мыши и выберем "Добавить новый. ". Теперь нажимаем "Qt" -> "Qt Resource File". Имя - res. В открывшемся окне нажимаем "Добавить" -> "Добавить префикс", а после добавления - "Добавить файлы". Выбираем файл, а в появившемся окне "Неверное размещение файла" кликаем "Копировать".
Получилось! Сохраняем все. Снова открываем форму. Кликаем правой кнопкой мыши по Graphics View, выбираем "styleSheet. " -> "Добавить ресурс" -> "background-image". В левой части появившегося окна выбираем prefix1, а в правой - нашу картинку. Нажимаем "ОК". Настраиваем длину и ширину.
Все! Теперь можно приступать к коду. Клик правой кнопкой мыши по кнопке открывает контекстное меню, теперь надо нажать "Перейти к слоту. " -> "clicked()". В окне набираем следующий код:
Или вы можете скачать полный проект на GitHub. Работа с Qt Creator завершена, нажимаем на значок зеленой стрелки слева, и ждем запуска программы (если стрелка серая, сначала нажмите на значок молотка). Запустилось! Ура!
Выводы
Установка и настройка Qt Creator завершена. Теперь вы сможете создавать свои программы под огромное число платформ, оставляя код нетронутым! Кстати, установив Qt на Windows, вы сможете скомпилировать этот проект и там. Удачи вам!
Как правило программы пишутся для того чтобы их впоследствии распространять. Либо в открытом доступе, либо локально (например, внутри компании).
Как сделать, чтобы пользователь мог работать с программой, написанной на Qt, на своём компьютере?
Подготовку программы на Qt к распространению можно условно разделить на два этапа:
Компиляция программы в «релиз»;
Комплектация программы необходимыми библиотеками.
Рассмотрим оба этапа применительно к Qt 5.7 с компилятором MinGW для операционной системы Windows.
Компиляция программы в «релиз»
Существуют два основных варианта компиляции приложения:
Отладочный вариант используется только на этапе разработки и не предназначен для распространения. Кроме того, при комплектации библиотеками для отладочного варианта последние должны иметь суффикс « d » в названии.
Поэтому программу перед распространением необходимо скомпилировать в варианте «Выпуск» («релиз»).
Выбрать нужный вариант компиляции можно непосредственно в рабочем окне QtCreator как показано на скриншоте.
После выбора варианта компиляции и её последующего запуска, программа будет скомпилирована соответствующим образом.
Комплектация библиотеками
После компиляции программы её следует обязательно укомплектовать необходимыми библиотеками.
Дело в том, что в папке со скомпилированной программой находится только исполняемый файл (exe). В таком виде программа будет работоспособна только при запуске из QtCreator, что для обычного пользователя совершенно не приемлемо (да и для самого разработчика не всегда удобно).
Конкретный перечень необходимых библиотек зависит от проекта. Ниже приведён список самых основных из них (которые требуются для запуска любого Qt приложения).
Библиотеки собственно Qt:
Их, а также другие библиотеки Qt можно найти в папке : папка_установки_Qt\Tools\mingw530_32\bin
Служебные библиотеки компилятора:
Их можно найти в папке: папка_установки_Qt\5.7\mingw53_32\bin
Для того чтобы укомплектовать своё приложение необходимыми библиотеками достаточно просто скопировать их в папку с исполняемым файлом.
После этого программа будет готова к распространению и можно приступать к созданию инсталлятора или просто упаковать приложение вместе со всеми библиотеками, например, в zip архив.
Обратите внимание!
Библиотеки для приложения следует копировать именно из папок mingw, а не QtCreator. В последнем случае программа будет укомплектована библиотеками, которые предназначены только для QtCreator и, как следствие, может в итоге оказаться неработоспособной.
Читайте также: