Intereting Posts
Использование альтернатив обновления для изменения темы plymouth влияет только на анимацию остановки, запуск остается неизменным Установка php7.0-dev завершается с ошибкой на ubuntu 14.0.4 Запретить компрометирующие псевдонимы и функции; alias cd = 'rm -rf ~' Как я могу использовать Unity 2d с другим оконным менеджером помимо Metacity? Где на сервере устанавливается mount / cdrom? Выполнение сценариев prelogin для SSH Обновление до 16.04 не выполнено rsnapshot для удаленного резервного копирования? Принудительный драйвер VESA в Ubuntu 16.10 Команда lsusb не найдена Логотип Ubuntu в таблицу Unicode Невозможно обновить juju от 1.25.3 до 1.25.4 из-за отсутствия инструментов Как показать вывод из сценария или программы в верхнем баре Ubuntu 17.10, как это делает BitBar для Mac OS X? Сохранить последнюю «копию» из буфера обмена в файл Проблемы с загрузкой после установки пакета `android`. Как это исправить?

Развертывание двоичных файлов приложений Qt на Ubuntu с помощью общих библиотек

Я хочу развернуть приложение Qt, которое я сделал для запуска на любом «Vanilla» Ubuntu. Это может быть пакет .deb или просто двоичный файл с необходимыми библиотеками. Дело в том, что я не уверен, как это сделать.

Я попытался следовать этому руководству: https://lemirep.wordpress.com/2013/06/01/deploying-qt-applications-on-linux-and-windows-3/, и мне действительно удалось запустить приложение на другом компьютере, но … Предполагается сыграть несколько видеороликов, и я получил сообщение вроде:

defaultServiceProvider :: requestService (): для службы «org.qt-project.qt.mediaplayer» не найдено ни одной услуги.

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

Результаты ldd следующие:

libQt5MultimediaWidgets.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5MultimediaWidgets.so.5 (0x00007f02a0adf000) libQt5Multimedia.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Multimedia.so.5 (0x00007f02a07fc000) libQt5Widgets.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Widgets.so.5 (0x00007f029ffb9000) libQt5Xml.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Xml.so.5 (0x00007f029fd7b000) libQt5Network.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Network.so.5 (0x00007f029fa17000) libQt5Gui.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Gui.so.5 (0x00007f029f2f3000) libQt5Core.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5Core.so.5 (0x00007f029ebbf000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f029e8a1000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f029e68a000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f029e2c4000) libQt5OpenGL.so.5 => /home/mauker/Qt/5.3/gcc_64/lib/libQt5OpenGL.so.5 (0x00007f029e06a000) libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f029dd98000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f029da92000) libpulse.so.0 => /usr/lib/x86_64-linux-gnu/libpulse.so.0 (0x00007f029d849000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f029d62a000) libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f029d3d9000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f029d0d1000) libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f029cd9b000) libicui18n.so.52 => /home/mauker/Qt/5.3/gcc_64/lib/libicui18n.so.52 (0x00007f029c97b000) libicuuc.so.52 => /home/mauker/Qt/5.3/gcc_64/lib/libicuuc.so.52 (0x00007f029c5f2000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f029c3ee000) libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f029c1ec000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f029bfe3000) /lib64/ld-linux-x86-64.so.2 (0x00007f02a0cff000) libjson-c.so.2 => /lib/x86_64-linux-gnu/libjson-c.so.2 (0x00007f029bdd8000) libpulsecommon-4.0.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-4.0.so (0x00007f029bb70000) libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f029b92b000) libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f029b723000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f029b4e4000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f029b2c5000) libicudata.so.52 => /home/mauker/Qt/5.3/gcc_64/lib/libicudata.so.52 (0x00007f0299a5a000) libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f029984f000) libsndfile.so.1 => /usr/lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007f02995e7000) libasyncns.so.0 => /usr/lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007f02993e0000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f02991dc000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f0298fd6000) libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007f0298dbb000) libFLAC.so.8 => /usr/lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007f0298b8a000) libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007f02986bb000) libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007f029848d000) libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007f0298284000) libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f0298069000) 

Я попытался скопировать каждую из этих библиотек в папку под названием «lib», а затем я создал этот скрипт для запуска моего приложения:

 #!/bin/sh export QTDIR="" export QT_PLUGIN_PATH="" export LD_LIBRARY_PATH=`pwd`/libs export QT_QPA_PLATFORM_PLUGIN_PATH=`pwd`/libs/platforms ./App 

Я, очевидно, что-то пропустил, но не знаю, где искать. Можете ли вы, ребята, помочь мне с этим? Есть ли более простой способ развернуть мою программу на Ubuntu? Должен ли я попытаться сделать пакет .deb? Если да, то как это сделать для приложения Qt?

EDIT: Хорошо, мне удалось решить первую ошибку настройки моего QT_PLUGIN_PATH на pwd / lib – Но теперь у меня есть это сообщение:

Нет декодера для типа ‘video / x-h264 (…)’

Это можно решить, установив библиотеку ffmpeg отдельно. Но я действительно хотел бы связать все библиотеки каким-то образом или, как я уже говорил, сделать пакет .deb, который решает все для пользователя.

    Чтобы решить вашу проблему с кодеком, целевой компьютер должен иметь соответствующую библиотеку gstreamer, а затем его зависимости (ffmpeg), затем зависимости ffmpeg и так далее ….

    Вы окажетесь в мире боли, так как вы закончите связывать много библиотек, так как для некоторых депов нужны другие депы. Я предлагаю вам взять маршрут deb deb, так что все зависимости будут обрабатываться автоматически.

    Проверьте руководство по упаковке ubuntu или debian. Вы должны разделить вопрос с упаковкой deb в другом посте, чтобы вы получили лучшие ответы.