在Ubuntu上使用共享库部署Qt应用程序二进制文件

我想部署一个我已经在任何“Vanilla”Ubuntu上运行的Qt应用程序。 它可能是一个.deb软件包,或者简单的二进制文件。 事情是,我不知道该怎么做。

我试图按照这个教程: https : //lemirep.wordpress.com/2013/06/01/deploying-qt-applications-on-linux-and-windows-3/我真的设法让应用程序运行在另一台电脑上,但是…它应该播放一些video,我得到了一个消息:

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应用程序?

编辑:好吧,我已经设法解决第一个错误设置我的QT_PLUGIN_PATH pwd / lib – 但现在我有这样的消息:

没有解码器可用于types'video / x-h264(…)'

这可以通过单独安装ffmpeg库来解决。 但是我真的想要以某种方式捆绑所有的库,或者像我之前说过的那样,为了解决用户的一切问题而制作一个.deb软件包。

Solutions Collecting From Web of "在Ubuntu上使用共享库部署Qt应用程序二进制文件"

为了解决你的编解码器问题,目标PC将需要安装相应的gstreamer库,然后它的依赖关系(ffmpeg),然后是ffmpeg依赖关系,等等。

你会处在一个痛苦的世界里,因为你会结束很多图书馆,因为有些图书馆需要其他的图书馆。 我建议你去deb包装路线,所有的依赖关系将被自动处理。

检查Ubuntu的包装指南或Debian之一。 你应该在另一个帖子拆分你的包装问题,所以你会得到更好的答复。