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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ubuntu+Qt4.8 - проблема с загрузкой плагинов  (Прочитано 6349 раз)
iamserg
Гость
« : Январь 24, 2014, 07:19 »

Доброго времени суток всем. Написал программку и несколько плагинов для нее, все замечательно работает.
Стал готовить программу к распространению. В папке /usr/local я создал папку myprogram с бинарником, в этой папке - папку plugins с плагинами. Если запускаю программу из консоли от имени пользователя, то получаю ошибку "The file '/usr/local/myprogram/plugins/libplugin<n>.so' is not a valid Qt plugin." для всех плагинов в папке plugins и ни один плагин не загружается. Если запускаю эту же программу из другой консоли от суперпользователя - все работает как часики, плагины грузятся, никаких сообщений в консоли нет... В чем может быть проблема?
ЗЫЖ в проге, запущенной из QtCreator под пользователем все плагины грузятся без проблем (и отладочный, и релизный вариант), но там пути другие, ессесно.
Записан
carrygun
Гость
« Ответ #1 : Январь 24, 2014, 10:20 »

Плагины надо помещать не в папку plugins а в папку с именем конкретного плагина (набора плагинов). Например плагины для работы с БД должны лежать рядом в папке sqldrivers.
Записан
iamserg
Гость
« Ответ #2 : Январь 24, 2014, 11:43 »

Про сторонние плагины я знаю. В моем случае плагины - мои, самописные, подключаемые через QPluginLoader. странность в том, что они не подключаются  при запуске программы из консоли под юзером, а под рутом все работает без вопросов
Записан
iamserg
Гость
« Ответ #3 : Январь 24, 2014, 14:46 »

Поэкспериментировал немного с размещением бинарников, получается очень странная ситуация. если я копирую папку myprogram с вложенной папкой плагинов в любое другое место, кроме /usr/local - программа запускается под пользователем и корректно загружает плагины. ради любопытства пробовал поместить папку со своей программой в /usr, /usr/share, /tmp, /var, /var/www - во всех этих папках она запускается!
« Последнее редактирование: Январь 24, 2014, 14:58 от iamserg » Записан
Figaro
Гость
« Ответ #4 : Январь 25, 2014, 07:42 »

читайте в ассистенте про qt.conf
Записан
iamserg
Гость
« Ответ #5 : Январь 25, 2014, 19:57 »

читайте в ассистенте про qt.conf
Читал, ничего не нашел. Если не трудно, ткните носом в ту строку ассистанта, которая имеет отношение к описанной в моих постах ситуации.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Январь 25, 2014, 20:02 »

читайте в ассистенте про qt.conf
Читал, ничего не нашел. Если не трудно, ткните носом в ту строку ассистанта, которая имеет отношение к описанной в моих постах ситуации.

Гугл спасает: http://doc.crossplatform.ru/qt/4.6.x/qt-conf.html
Записан

iamserg
Гость
« Ответ #7 : Январь 25, 2014, 20:30 »

еще один... ребят, вы хоть читали в чем заключается проблема, в каком случае (этот случай - один, кстати) и какие плагины не загружаются?
а английский язык я знаю. спасибо за ссылку на русский перевод помощи, но я просил конкретные строки, которые подскажут, почему мои самописные плагины не загружаются, если программа находится в папке /usr/local, но при копировании папки с моей программой и плагинами в любое другое место - плагины загружаются?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Январь 25, 2014, 21:56 »

попробуй на Debian. Может apparmor какой-нибудь не даёт грузить из /usr/local.
Записан
iamserg
Гость
« Ответ #9 : Январь 25, 2014, 22:27 »

о, спасибо за совет! в понедельник попробую покрутить apparmor, почитал про него... возможно в нем причина:)
Записан
Figaro
Гость
« Ответ #10 : Январь 26, 2014, 06:59 »

мой выглядит так:

[Paths]
Prefix = .
Translations = translations
Plugins = plugins
Записан
iamserg
Гость
« Ответ #11 : Январь 28, 2014, 15:10 »

посмотрел apparmor, выходит что мое приложение он никак не обрабатывает и как-будто бы не при делах... Также вставил такую строку перед загрузкой плагинов:
Код:
QMessageBox::information(0, QString("Library path"), qApp->libraryPaths().join("\n"), QMessageBox::Ok);
и при этом жестко указывал папку в которой находятся мои плагины: /usr/local/myprogram/plugins
что любопытно: содержимое libraryPaths одинаково и когда программа запущена от юзера, и когда запуск был от суперпользователя. Только в первом случае в консоли идет ругань на невалидные Qt плагины и соответственно загружено 0 плагинов, а во втором - все хорошо и все плагины загружаются. В общем, я для себя решил разместить программу в /usr/share, а все настройки в домашней папке.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Январь 28, 2014, 15:59 »

посмотрел apparmor, выходит что мое приложение он никак не обрабатывает и как-будто бы не при делах... Также вставил такую строку перед загрузкой плагинов:

Откомпилируй и запусти в Debian, например в виртуалке.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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