2014-02-07 3 views
0

У меня QT 5.2 установлен на Ubuntu 12.04. Я не создал его, а просто загрузил и распаковал с сайта QT. Мой вопрос заключается в том, как мы можем упаковать необходимые библиотеки вместе с исполняемым файлом для развертывания? Документация QT говорит, что мы должны построить QT для статической компоновки, но в файле QT отсутствует файл конфигурации. Спасибо заранее.Как развернуть приложение QT5.2?

+0

[документация] (http://qt-project.org/doc/qt-5/linux-deployment.html) фактически охватывает как статические, так и общие ссылки. Вам нужны источники [Qt] (http://qt-project.org/downloads) для восстановления статического Qt, если вы решите пойти таким путем. – peppe

+0

Загрузил источники и построил их. Будет следовать документации и обновлять статус здесь. – ravindu1024

+0

Я построил источник для статической привязки, и приложение теперь включает в себя все Qt libs. Но он по-прежнему не работает на других системах, поскольку сторонние библиотеки не связаны. (например: libxcb *). – ravindu1024

ответ

2

Ok. Поэтому мне, наконец, удалось развернуть мое приложение Qt вместе со своими зависимостями после бесчисленных часов работы в Интернете. Это было сделано на Ubuntu 12.04 с Qt 5.2.

Это, как я это сделал:

  1. Статический построить Qt из источника, используя следующую команду:

    ./configure -opensource -confirm-license -prefix ./qtbase -make libs -make tools -release -opengl desktop -static -skip qtwebkit -no-icu -nomake tests -nomake examples 
    
    make -j -4 
    

Вы можете загрузить исходный код из http://download.qt-project.org/official_releases/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz Вы не можете статическими постройте версию установщика Qt.

  1. Откройте ваш проект Qt и восстановите его. Зависимости Qt будут встроены в исполняемый файл приложения. Проверьте с помощью ldd, чтобы убедиться, что все сделано правильно.

    ldd ./<app_executable> 
    
  2. Теперь, когда вы пытаетесь запустить это на систему без Qt может попросить другие зависимости третьих сторон, которые вы видите с LDD. Например: libxcb -... Вы можете либо установить эти зависимости с помощью apt-get в целевой системе, либо предоставить вам файлы с вашим приложением. То есть: добавьте необходимые файлы .so и их мягкие ссылки в каталог с именем libs вместе с вашим исполняемым файлом.

  3. После устранения проблем с зависимостями lib приложение сообщит об ошибке, связанной с отсутствием шрифтов Qt. Самый простой способ исправить это - предоставить папку Qt fonts вместе с приложением.

  4. Эта ссылка дает хороший способ сделать это: http://goblincoding.com/2013/11/07/deploying-qt-5-applications-on-ubuntu-12-04/

  5. Резюме выше страницы является то, что вам нужно поставить небольшой Баш скрипт для запуска приложения. скрипт должен выглядеть следующим образом:

    #~/bin/bash 
    export LD_LIBRARY_PATH=./libs 
    export QT_QPA_FONTDIR=./fonts 
    ./<app_executable> 
    

Целевая система теперь будет найти эти библиотеки и шрифты из каталогов, поставляемых и будет работать без проблем. Надеюсь, это помогло.

ПРИМЕЧАНИЕ. Я не пробовал, но этот метод сценария должен работать, даже если вы поставляете библиотеки Qt без статического построения источника qt.

+0

Настоящим решением было бы упаковать ваше программное обеспечение в пакет .deb, чтобы вы могли указать зависимости.Когда он будет установлен в целевой системе с помощью apt, будут загружены и установлены соответствующие зависимости. Это единственный разумный способ развертывания приложения в системе с менеджером пакетов. –

+0

@jack_black, когда я запускаю ./configure, я получаю «bash: ./configure: Нет такого файла или каталога» - что это значит? – clearScreen

+1

@clearScreen Я думаю, что вы пытаетесь запустить скрипт из неправильной папки. Убедитесь, что скрипт «configure» присутствует в каталоге. – ravindu1024

Смежные вопросы