Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: phpCoder от Январь 31, 2017, 13:42



Название: Развёртывание приложения в Linux
Отправлено: phpCoder от Январь 31, 2017, 13:42
Добрый день.
Хочу развернуть приложение в Linux (Ubuntu 14), сделанное на Qt 5.8. Что было сделано:
1. В файле *.pro было записано это:
Код:
QMAKE_LFLAGS    += "-Wl,-rpath,\'\$$ORIGIN\'"
2. После компиляции приложения была создана папка, в которую был помещен сам исполняемый файл, файлы вида libQt5[...].so.5 (в том числе libQt5DBus), другие файлы, которые обнаружила утилита ldd, а также папка platforms с файлом libqxcb.so.

На свежеустановленном Ubuntu запускаю мое приложение, но ничего не происходит. Пробую запустить его через терминал, получаю:
Код:
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Reinstalling the application may fix this problem.
Аварийный останов (сделан дамп памяти)

Запускаю вот так: LD_LIBRARY_PATH=. QT_DEBUG_PLUGINS=1 ./MyApp
Получаю:
Код:
QFactoryLoader::QFactoryLoader() checking directory path "/home/andrey/Документы/RXE/platforms/platforms" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/andrey/Документы/RXE/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/home/andrey/Документы/RXE/platforms/libqxcb.so"
Found metadata in lib /home/andrey/Документы/RXE/platforms/libqxcb.so, metadata=
{
    "IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.2",
    "MetaData": {
        "Keys": [
            "xcb"
        ]
    },
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 328193
}


Got keys from plugin meta data ()
This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Reinstalling the application may fix this problem.
Аварийный останов (сделан дамп памяти)

Т.е. он видит libqxcb.so, но не запускает его... Что делать? Что нужно прописать в настройках проекта, в PRO файле,... чтобы мое приложение запускалось НОРМАЛЬНО, по-человечески, нажимая на иконку как в Windows?

Делать bash скрипт, который подменяет что-то там в LD_LIBRARY_PATH не хочется. По-человечески надо.


Название: Re: Развёртывание приложения в Linux
Отправлено: ksk- от Февраль 01, 2017, 05:17
Если по человечески, то нужно собрать deb-пакет под нужную версию Ubuntu. И всё будет как надо. ))


Название: Re: Развёртывание приложения в Linux
Отправлено: qate от Февраль 01, 2017, 10:03
Делать bash скрипт, который подменяет что-то там в LD_LIBRARY_PATH не хочется. По-человечески надо.

т.е. qtcreator это сделал не по человечески, использую sh запуск ?
пользователю то всеравно что там под иконкой
также еще нужен qt.conf
вобщем смотри как сам креатор запускается


Название: Re: Развёртывание приложения в Linux
Отправлено: phpCoder от Февраль 01, 2017, 14:42
Где найти пошаговую инструкцию, как по-нормальному развернуть приложение на этом linux?


Название: Re: Развёртывание приложения в Linux
Отправлено: phpCoder от Февраль 01, 2017, 16:39
Кажется получилось.
Сделал sh скрипт с содержимым:
Код:
#!/bin/sh
filename=`basename $0`
export LD_LIBRARY_PATH=$PWD
$PWD/${filename%.*} "$@"


Название: Re: Развёртывание приложения в Linux
Отправлено: qate от Февраль 01, 2017, 23:34
Где найти пошаговую инструкцию, как по-нормальному развернуть приложение на этом linux?

1. можно разобраться как делается deb пакет для ubuntu (и\или rpm для других дистрибутивов) из готового исходника, так обычно принято распространять приложения
2. можно использовать https://doc.qt.io/qtinstallerframework/ - тогда нужен будет один файл для всех linux дистрибутивов (так делает сама qt)
3. совсем просто - сделать архив со всем необходимым

все зависит для кого будет все это делаться


Название: Re: Развёртывание приложения в Linux
Отправлено: demal от Февраль 02, 2017, 21:27
Где найти пошаговую инструкцию, как по-нормальному развернуть приложение на этом linux?

1. можно разобраться как делается deb пакет для ubuntu (и\или rpm для других дистрибутивов) из готового исходника, так обычно принято распространять приложения
2. можно использовать https://doc.qt.io/qtinstallerframework/ - тогда нужен будет один файл для всех linux дистрибутивов (так делает сама qt)
3. совсем просто - сделать архив со всем необходимым

все зависит для кого будет все это делаться

вот с первым вариантом интересней всего, только я вот нигде не нашел простого примера spec файла требуемого для qt приложения. :-[ Кинте кто-нить пример спеки, если до этого всё в pro-файле прописано...


Название: Re: Развёртывание приложения в Linux
Отправлено: qate от Февраль 03, 2017, 10:14
вот с первым вариантом интересней всего, только я вот нигде не нашел простого примера spec файла требуемого для qt приложения. :-[ Кинте кто-нить пример спеки, если до этого всё в pro-файле прописано...

например, можно посмотреть спек qbittorrent



Название: Re: Развёртывание приложения в Linux
Отправлено: DarkHobbit от Февраль 18, 2017, 22:14
вот с первым вариантом интересней всего, только я вот нигде не нашел простого примера spec файла требуемого для qt приложения.
Первый вариант действительно самый идейно правильный. К сожалению, делать DEB-пакеты намного сложнее, чем RPM. Для RPM достаточно простенького спека, для DEB нужна целая структура каталогов, процесс её создания называется дебианизацией. К счастью, не все файлы в этой структуре обязательны. Можно прочесть, например, статью на хабре (https://habrahabr.ru/post/78094/).


Название: Re: Развёртывание приложения в Linux
Отправлено: dibor от Ноябрь 06, 2019, 16:51
1. В файле *.pro было записано это:
Код:
QMAKE_LFLAGS    += "-Wl,-rpath,\'\$$ORIGIN\'"

Добрый день.
У меня на Федоре и Кт 5.13 не создается доп. папка и не какие либсы никуда не переписываются :(
При использовании cqtdeployer  дает ошибку copy TR ERROR, иди пойми что это значит.
При использовании Linuxdeployqt программа говорит что моя система через чур новая для нее.
Короче как развернуть Linux приложение так мне и не понятно.
Если кто то может то пож. какие либо примеры, только пож. не надо посылать меня к документам Qt, там мне не понятно.
Скорее всего , мозги уже не те после 50-ти :(

Спасибо.


Название: Re: Развёртывание приложения в Linux
Отправлено: SektorCT от Январь 14, 2020, 17:18
Проще собрать snap пакет и все, я свои приложения и даже на фирме в snap  закидываешь все и готово.


Название: Re: Развёртывание приложения в Linux
Отправлено: Fregloin от Март 19, 2020, 15:25
Snap не всегда корректно работает, + лишние зависимости на сам snap
Как уже говорили, надо делать rpm или deb пакет, ничего сложного в этом нет