Название: Проблема запуска qt приложения Отправлено: vohulg от Сентябрь 05, 2013, 07:05 Доброго дня.
Такая проблема возникла при запуске скомпилированного приложения. На Slackware 14 в QTCreator 5 скомпилировал приложение. Затем исполняемый файл перенес на другую машину с установленной такой же Slackware 14, но без QTCreator. Для того чтобы приложение запустилось я копирую все недостающие библиотеки (какие недостает я проверяю через команду $ ldd myappl) из машины где я компилировал в машину без QTCreator. ldd находит все нужные библиотеки. Но при запуске возникает ошибка: "Failed to load platform plugin "xcb". Available platform are: Aborted" Кто знает в чем может быть проблема. И возможно ли скомпилировать так чтобы библиотеки QT сразу включились в исполняемый файл, пусть даже он весит много. Спасибо Название: Re: Проблема запуска qt приложения Отправлено: Serr500 от Сентябрь 05, 2013, 08:20 QTCreator 5 Нет такого зверя. Есть Qt5, а QtCreator - IDE для Qt и его последняя версия - 2.8.1.Для того чтобы приложение запустилось я копирую все недостающие библиотеки (какие недостает я проверяю через команду $ ldd myappl) ldd не покажет все библиотеки. Есть ещё плагины, которые ldd не покажет. Почитайте вот это: http://qt-project.org/wiki/Deploying_a_Qt5_Application_Linux (http://qt-project.org/wiki/Deploying_a_Qt5_Application_Linux).возможно ли скомпилировать так чтобы библиотеки QT сразу включились в исполняемый файл Возможно. Смотрите в сторону статической сборки.P.S. Копирование недостающих библиотек не есть правильный путь в Linux. Рекомендуется создавать пакеты с зависимостями. Название: Re: Проблема запуска qt приложения Отправлено: Alex Custov от Сентябрь 05, 2013, 13:43 И возможно ли скомпилировать так чтобы библиотеки QT сразу включились в исполняемый файл, пусть даже он весит много. Принято создавать пакеты, где указаны зависимости. Название: Re: Проблема запуска qt приложения Отправлено: GreatSnake от Сентябрь 05, 2013, 14:49 P.S. Копирование недостающих библиотек не есть правильный путь в Linux. Рекомендуется создавать пакеты с зависимостями. А как быть бедным разработчикам коммерческих приложений, которые не хотят покупать Qt, но хотят, чтобы их приложения работали даже на древних системах?Название: Re: Проблема запуска qt приложения Отправлено: Serr500 от Сентябрь 05, 2013, 15:02 Не понял связи... ???
Название: Re: Проблема запуска qt приложения Отправлено: GreatSnake от Сентябрь 05, 2013, 15:06 Не понял связи... ??? А чего тут не понятного ???Коли хочешь, чтобы твоё приложение везде работало - носи всё с собой. Название: Re: Проблема запуска qt приложения Отправлено: Serr500 от Сентябрь 05, 2013, 15:16 И причём здесь покупка коммерческой версии?
Название: Re: Проблема запуска qt приложения Отправлено: GreatSnake от Сентябрь 05, 2013, 15:19 И причём здесь покупка коммерческой версии? А при том, что чтобы не таскать всё с собой, можно линковаться статически. Но не для коммерческих приложений.Название: Re: Проблема запуска qt приложения Отправлено: Serr500 от Сентябрь 05, 2013, 15:39 А! Забыл про этот нюанс... :( Прошу пардону...
Название: Re: Проблема запуска qt приложения Отправлено: kamre от Сентябрь 05, 2013, 16:17 Принято создавать пакеты, где указаны зависимости. Если создать пакет, например, для ubuntu и затребовать в зависимости Qt 5.1, то как установить свою программу в ubuntu 12.04 LTS?Название: Re: Проблема запуска qt приложения Отправлено: Alex Custov от Сентябрь 05, 2013, 16:25 Если создать пакет, например, для ubuntu и затребовать в зависимости Qt 5.1, то как установить свою программу в ubuntu 12.04 LTS? Добавить Qt5 через ppa? Я не говорю, что пакеты - единственно правильно, если нет другого выхода, что бывает очень редко, можно компилировать статически или таскать все dll с собой. И даже в этих случаях могут быть проблемы - Webkit не поддерживает статику, а в с случае с кучей DLL они должны быть скомпилированы на более старой системе. Название: Re: Проблема запуска qt приложения Отправлено: vohulg от Сентябрь 06, 2013, 14:18 Так я и не понял как конкретно определить список зависимостей. Если вы говорите что ldd показывает не все, то что показывает все.
В этой статье http://qt-project.org/wiki/Deploying_a_Qt5_Application_Linux описано что для определния зависимостей использует ldd Then I started to search how to find the dependencies of my app. I found that I have to use the ldd tool Потом в описании есть описание моей проблемы - Later I spent many hours finding out why my installed app cannot start: I had to include the folder platforms and the file libqxcb.so from the /path/to/Qt/plugins/ into the DEB package. And in addition I had to install the library libQt5DBus.so.5, since libqxcb.so requires it. То есть человек также утилитой ldd определил и затем скопировал в пакет все выведенные библиотеки, а приложение не запускается и просит какой то пакет xcb. Насколько я понял переведя эти предложения, что он скопировал папку /path/to/Qt/plugins/platforms/ в пакет. Я тоже так сделал, но только засунул папку /path/to/Qt/plugins/platforms/ рядом с исполняемым файлом. В результате ошибка немного поменялась: "Failed to load platform plugin "xcb". Available platform are: linuxfb minimal offscreen xcb Aborted" Как загрузить эти платформы ? Название: Re: Проблема запуска qt приложения Отправлено: GreatSnake от Сентябрь 06, 2013, 14:30 Так я и не понял как конкретно определить список зависимостей. Если вы говорите что ldd показывает не все, то что показывает все. Способов много. Вот хотя бы один:Код
Название: Re: Проблема запуска qt приложения Отправлено: alex312 от Сентябрь 07, 2013, 08:50 vohulg, вы проверяете ldd свое приложение. так проверте с помощью ldd и плагин libqtxcb.so, посмотрите что ему не хватает.
Название: Re: Проблема запуска qt приложения Отправлено: vohulg от Сентябрь 09, 2013, 07:23 vohulg, вы проверяете ldd свое приложение. так проверте с помощью ldd и плагин libqtxcb.so, посмотрите что ему не хватает. Спасибо, помогло. Не хватало libQt5Dbus для /path/to/Qt/plugins/platforms/* Причем получается что для запуска приложения надо чтобы в одной папке с исполняемым файлом лежала папка /platforms c содержимым из библиотеки Qt (/path/to/Qt/plugins/platforms/*) |