Russian Qt Forum
Март 28, 2024, 16:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Развёртывание приложения в Linux  (Прочитано 11747 раз)
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 не хочется. По-человечески надо.
Записан
ksk-
Самовар
**
Offline Offline

Сообщений: 178



Просмотр профиля
« Ответ #1 : Февраль 01, 2017, 05:17 »

Если по человечески, то нужно собрать deb-пакет под нужную версию Ubuntu. И всё будет как надо. ))
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #2 : Февраль 01, 2017, 10:03 »

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

т.е. qtcreator это сделал не по человечески, использую sh запуск ?
пользователю то всеравно что там под иконкой
также еще нужен qt.conf
вобщем смотри как сам креатор запускается
Записан
phpCoder
Гость
« Ответ #3 : Февраль 01, 2017, 14:42 »

Где найти пошаговую инструкцию, как по-нормальному развернуть приложение на этом linux?
Записан
phpCoder
Гость
« Ответ #4 : Февраль 01, 2017, 16:39 »

Кажется получилось.
Сделал sh скрипт с содержимым:
Код:
#!/bin/sh
filename=`basename $0`
export LD_LIBRARY_PATH=$PWD
$PWD/${filename%.*} "$@"
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #5 : Февраль 01, 2017, 23:34 »

Где найти пошаговую инструкцию, как по-нормальному развернуть приложение на этом linux?

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

все зависит для кого будет все это делаться
Записан
demal
Чайник
*
Offline Offline

Сообщений: 53


Просмотр профиля
« Ответ #6 : Февраль 02, 2017, 21:27 »

Где найти пошаговую инструкцию, как по-нормальному развернуть приложение на этом linux?

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

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

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

Сообщений: 1175


Просмотр профиля
« Ответ #7 : Февраль 03, 2017, 10:14 »

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

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

Записан
DarkHobbit
Самовар
**
Offline Offline

Сообщений: 189


Просмотр профиля
« Ответ #8 : Февраль 18, 2017, 22:14 »

вот с первым вариантом интересней всего, только я вот нигде не нашел простого примера spec файла требуемого для qt приложения.
Первый вариант действительно самый идейно правильный. К сожалению, делать DEB-пакеты намного сложнее, чем RPM. Для RPM достаточно простенького спека, для DEB нужна целая структура каталогов, процесс её создания называется дебианизацией. К счастью, не все файлы в этой структуре обязательны. Можно прочесть, например, статью на хабре.
Записан

Мои проекты на Qt: DoubleContact, LInvert
dibor
Гость
« Ответ #9 : Ноябрь 06, 2019, 16:51 »

1. В файле *.pro было записано это:
Код:
QMAKE_LFLAGS    += "-Wl,-rpath,\'\$$ORIGIN\'"

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

Спасибо.
Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 210


Просмотр профиля
« Ответ #10 : Январь 14, 2020, 17:18 »

Проще собрать snap пакет и все, я свои приложения и даже на фирме в snap  закидываешь все и готово.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #11 : Март 19, 2020, 15:25 »

Snap не всегда корректно работает, + лишние зависимости на сам snap
Как уже говорили, надо делать rpm или deb пакет, ничего сложного в этом нет
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.