Название: Переносимость Qt программ на Linux
Отправлено: 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 Ничего не помогло. Подскажите куда нужно кидать эти либы, или же как заставить программу искать либы в папке с собой ?
Название: Re: Переносимость Qt программ на Linux
Отправлено: abodnya от Апрель 24, 2013, 16:06
Может быть давать пользователю предложение скачать с определенного репозитория необходимые пакеты для запуска? Тогда какие именно пакеты нужны и в каком репозитории лучше их искать (как известно в дебиане репы времен динозавров и либ пятого кьюта там точно нет)
Название: Re: Переносимость Qt программ на Linux
Отправлено: maint от Апрель 24, 2013, 16:21
бросаем все это барахло, скажем, в /usr/local/lib. Потом от имени администратора набираем ldconfig.Запускаем, если не сработает, тогда плюем на все или собираем в статическую версию программы
Название: Re: Переносимость Qt программ на Linux
Отправлено: Vass от Апрель 24, 2013, 17:17
(как известно в дебиане репы времен динозавров и либ пятого кьюта там точно нет)
Сами вы времен динозавров :) Все там уже есть http://perezmeyer.blogspot.ru/2013/04/on-road-to-qt-5-qt-5-base-tools.html
Название: Re: Переносимость Qt программ на Linux
Отправлено: Alex Custov от Апрель 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, и почти наверняка потребует обновить половину системы.
Название: Re: Переносимость Qt программ на Linux
Отправлено: abodnya от Апрель 24, 2013, 19:26
Может решить проблему, собрав deb пакет и вписав в него нужные зависимости? Кто-то может подсказать как лучше через ckeckinstall создавать deb пакеты, которые нормально поставятся в /usr/bin и будут отображаться в меню?
Название: Re: Переносимость Qt программ на Linux
Отправлено: Fat-Zer от Апрель 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 Ничего не помогло. Подскажите куда нужно кидать эти либы, или же как заставить программу искать либы в папке с собой ?
библиотеку не забыл исполняемой сделать?
Название: Re: Переносимость Qt программ на Linux
Отправлено: Alex Custov от Апрель 24, 2013, 21:01
библиотеку не забыл исполняемой сделать?
библиотека может быть без атрибута x
Название: Re: Переносимость Qt программ на Linux
Отправлено: Fat-Zer от Апрель 24, 2013, 23:50
библиотека может быть без атрибута x
да... и правда...
Название: Re: Переносимость Qt программ на Linux
Отправлено: abodnya от Апрель 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
Название: Re: Переносимость Qt программ на Linux
Отправлено: abodnya от Апрель 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
Название: Re: Переносимость Qt программ на Linux
Отправлено: abodnya от Апрель 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? Ошибка сегментирования Они ссылаются на адрес, указаный в моем компьютере. Естественно у него этих файлов нет НО И У МЕНЯ ТОЖЕ Оо
Название: Re: Переносимость Qt программ на Linux
Отправлено: ayalon от Май 19, 2013, 15:15
У меня была похожая проблема, плюс не мог подключить библиотеки , которые разместил в корневом каталоге. Решение своей проблемы написал на форуме (http://mittag.ru/forum/index.php?topic=2.msg2#msg2)
|