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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Переносимость Qt программ на Linux  (Прочитано 8591 раз)
abodnya
Гость
« : Апрель 24, 2013, 16:01 »

Возникла следующая проблема:
У меня имеется исполняемый файлик программы для линукса (компилил на Ubuntu 12.04). Поскольку, у меня установлен QtSDK, проблем с запуском и поиском либ у меня нету, всё хорошо запускается.
Попробывал скинуть свою програмку другу, у которого Debian 6.0.6, у него программа выдала ошибку о том, что не найдена библиотека libQt5Widgets.5.so. Вместе с программой я также ему дал все нужные либы в папке с программой.
Состав папки:
Код:
$ ls -i -R
.:
 3351105 imageformats          11813407 libicuuc.so.49.1.2       11813410 libQt5Gui.so.5.0.0       3351104 QImageViewer
11813405 libicudata.so.49.1.2  11813408 libqgsttools_p.so.1.0.0  11813411 libQt5Widgets.so.5.0.0
11813406 libicui18n.so.49.1.2  11813409 libQt5Core.so.5.0.0       3351119 platforms

./imageformats:
3351115 libqgif.so  3351118 libqjpeg.so  3351110 libqtga.so  3351112 libqtiff.so  3351114 libqwbmp.so

./platforms:
3351120 libqlinuxfb.so  3351121 libqminimal.so  3351124 libqxcb.so
Пробывали кидать эту либу libQt5Widgets.so.5.0.0 в:
/usr/lib
/usr/lib/qt5
/usr/local/lib
пробывали также переименовывать на libQt5Widgets.so.5
Ничего не помогло. Подскажите куда нужно кидать эти либы, или же как заставить программу искать либы в папке с собой ?
Записан
abodnya
Гость
« Ответ #1 : Апрель 24, 2013, 16:06 »

Может быть давать пользователю предложение скачать с определенного репозитория необходимые пакеты для запуска?
Тогда какие именно пакеты нужны и в каком репозитории лучше их искать (как известно в дебиане репы времен динозавров и либ пятого кьюта там точно нет)
Записан
maint
Гость
« Ответ #2 : Апрель 24, 2013, 16:21 »

бросаем все это барахло, скажем, в /usr/local/lib. Потом от имени администратора набираем ldconfig.Запускаем, если не сработает, тогда плюем на все или собираем в статическую версию программы
Записан
Vass
Гость
« Ответ #3 : Апрель 24, 2013, 17:17 »

(как известно в дебиане репы времен динозавров и либ пятого кьюта там точно нет)

Сами вы времен динозавров Улыбающийся
Все там уже есть
http://perezmeyer.blogspot.ru/2013/04/on-road-to-qt-5-qt-5-base-tools.html
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Апрель 24, 2013, 18:35 »

Сами вы времен динозавров Улыбающийся
Все там уже есть
http://perezmeyer.blogspot.ru/2013/04/on-road-to-qt-5-qt-5-base-tools.html

Debian 6 уже довольно старенький, а Qt5 буквально на днях прошла Debian QA и будет пока только в experimental, и почти наверняка потребует обновить половину системы.
Записан
abodnya
Гость
« Ответ #5 : Апрель 24, 2013, 19:26 »

Может решить проблему, собрав deb пакет и вписав в него нужные зависимости?
Кто-то может подсказать как лучше через ckeckinstall создавать deb пакеты, которые нормально поставятся в /usr/bin и будут отображаться в меню?
Записан
Fat-Zer
Гость
« Ответ #6 : Апрель 24, 2013, 20:27 »

Может решить проблему, собрав deb пакет и вписав в него нужные зависимости?
можно, так правильно, но лучше собрать бинарник с qt4... по крайней мере до тех пор пока пятёрка не будет использоваться повсеместно...
Кто-то может подсказать как лучше через ckeckinstall создавать deb пакеты, которые нормально поставятся в /usr/bin и будут отображаться в меню?
чтобы отображалась иконка в меню нужно закинуть .desktop файл в /usr/share/applications/ (или другую поддиректорию applications из директорий указанных в $XDG_DATA_DIRS). сам desktop файл легко составляется по-аналогии... довольно скудные доки по формату есть на freedesktop.org.

Пробывали кидать эту либу libQt5Widgets.so.5.0.0 в:
/usr/lib
/usr/lib/qt5
/usr/local/lib
пробывали также переименовывать на libQt5Widgets.so.5
Ничего не помогло. Подскажите куда нужно кидать эти либы, или же как заставить программу искать либы в папке с собой ?
библиотеку не забыл исполняемой сделать?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Апрель 24, 2013, 21:01 »

библиотеку не забыл исполняемой сделать?

библиотека может быть без атрибута x
Записан
Fat-Zer
Гость
« Ответ #8 : Апрель 24, 2013, 23:50 »

библиотека может быть без атрибута x
да... и правда...
Записан
abodnya
Гость
« Ответ #9 : Апрель 24, 2013, 23:53 »

Половину проблемы решили.
Перед запуском нужно вручную указывать папку с прогой для поиска либ. Т.е. запуск выполнять так:
LD_LIBRARY_PATH="путь к папке с прогой" ./QImageViewer

Ну и либы нужно все переименовать, убрать последние 2 цифры (версию либы) для корректной работы
P.S: помог гайд http://www.stableit.ru/2010/03/so-cannot-open-shared-object-file-no.html

теперь другая проблема. Программа не видит папку platforms и соответственно выдает ошибку/
Код:
mkus@MComputer:~/Рабочий стол/QImageViewerLinux$ LD_LIBRARY_PATH=/home/mkus/Загрузки ./QImageViewer
Failed to load platform plugin "xcb". Available platforms are:
linuxfb
minimal
xcb
« Последнее редактирование: Апрель 25, 2013, 00:20 от abodnya » Записан
abodnya
Гость
« Ответ #10 : Апрель 25, 2013, 00:23 »

Прогуглив и поэксперементировав вышло запустить на платформе minimal. Но всеравно ошибки есть.

Код:
mkus@MComputer:~/Рабочий стол/QImageViewerLinux$ LD_LIBRARY_PATH=/home/mkus/Загрузки ./QImageViewer -platform minimal
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqlinuxfb.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqlinuxfb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1",
"MetaData": {
"Keys": [
"linuxfb"
]
},
"className": "QLinuxFbIntegrationPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqminimal.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqminimal.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1",
"MetaData": {
"Keys": [
"minimal"
]
},
"className": "QMinimalIntegrationPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqxcb.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.1",
"MetaData": {
"Keys": [
"xcb"
]
},
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("xcb")
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/platforms/libqminimal.so"
"ru_UA"
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqgif.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqgif.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"gif"
]
},
"className": "QGifPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("gif")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqico.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqico.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"ico"
]
},
"className": "QICOPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("ico")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqjpeg.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqjpeg.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"jpg",
"jpeg"
]
},
"className": "QJpegPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("jpg", "jpeg")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqmng.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqmng.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"mng"
],
"MimeTypes": [
"image/x-mng"
]
},
"className": "QMngPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("mng")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqsvg.so"
Found metadata in lib /home/mkus/Рабочий
00:20:53
стол/QImageViewerLinux/imageformats/libqsvg.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"svg",
"svgz"
]
},
"className": "QSvgPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("svg", "svgz")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqtga.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqtga.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"tga"
],
"MimeTypes": [
"image/x-tga"
]
},
"className": "QTgaPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("tga")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqtiff.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqtiff.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"tiff",
"tif"
],
"MimeTypes": [
"image/tiff",
"image/tiff"
]
},
"className": "QTiffPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("tiff", "tif")
QFactoryLoader::QFactoryLoader() looking at "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqwbmp.so"
Found metadata in lib /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqwbmp.so, metadata=
{
"IID": "org.qt-project.Qt.QImageIOHandlerFactoryInterface",
"MetaData": {
"Keys": [
"wbmp"
],
"MimeTypes": [
"image/vnd.wap.wbmp"
]
},
"className": "QWbmpPlugin",
"debug": false,
"version": 327680
}

Got keys from plugin meta data ("wbmp")
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqgif.so"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqico.so"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqjpeg.so"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqmng.so"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqsvg.so"
QLibraryPrivate::loadPlugin failed on "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqsvg.so" : "Cannot load library /home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqsvg.so: (libQt5Svg.so.5: невозможно открыть разделяемый объектный файл: Нет такого файла или каталога)"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqtga.so"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqtiff.so"
loaded library "/home/mkus/Рабочий стол/QImageViewerLinux/imageformats/libqwbmp.so"
Ошибка сегментирования
P.S: нагуглили тут http://www.cubieforums.com/topic_173_0.html
Записан
abodnya
Гость
« Ответ #11 : Апрель 25, 2013, 00:47 »

Осталась только следующая проблема:
Код:
root@MComputer:/home/mkus/Рабочий стол/QImageViewerLinux# export QT_DEBUG_PLUGINS=0
root@MComputer:/home/mkus/Рабочий стол/QImageViewerLinux# LD_LIBRARY_PATH=/home/mkus/Загрузки ./QImageViewer -platform minimal
"ru_UA"
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
QFontDatabase: Cannot find font directory '/home/abodnya/Qt5.0.0/5.0.0/gcc/lib/fonts' - is Qt installed correctly?
Ошибка сегментирования
Они ссылаются на адрес, указаный в моем компьютере. Естественно у него этих файлов нет
НО И У МЕНЯ ТОЖЕ Оо
Записан
ayalon
Гость
« Ответ #12 : Май 19, 2013, 15:15 »

У меня была похожая проблема, плюс не мог подключить библиотеки , которые разместил в корневом каталоге. Решение своей проблемы написал на форуме
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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