我在Ubuntu 12.04上安装了QT 5.2。我没有构建它,只是从QT网站下载并解压缩。我的问题是我们如何将所需的lib与可执行文件一起打包以进行部署? QT文档说我们应该为静态链接构建QT,但QT目录中缺少“configure”文件。 提前谢谢。
答案 0 :(得分:2)
确定。因此,经过无数小时的谷歌搜索后,我终于设法部署了我的Qt应用程序及其依赖项。这是在Ubuntu 12.04上用Qt 5.2完成的。
我就这样做了:
使用以下命令从源静态构建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的安装程序版本。
打开您的Qt项目并重建它。 Qt依赖项将内置到app可执行文件中。检查ldd以查看它是否正确完成。
ldd ./<app_executable>
现在,当您尝试在没有Qt的系统上运行它时,它可能会要求您使用ldd看到的其他第三方依赖项。例如:libxcb -... 您可以在目标系统上使用apt-get安装这些依赖项,也可以在应用程序中提供libs。即:将所需的.so文件及其软链接与可执行文件一起放入名为libs的目录中。
修复了lib依赖项问题后,应用程序将提供有关缺少Qt字体的错误。最简单的解决方法是提供Qt字体文件夹和应用程序。
此链接提供了一种很好的方法: http://goblincoding.com/2013/11/07/deploying-qt-5-applications-on-ubuntu-12-04/
上述摘要是您需要提供一个小型bash脚本来运行您的应用。脚本应如下:
#~/bin/bash
export LD_LIBRARY_PATH=./libs
export QT_QPA_FONTDIR=./fonts
./<app_executable>
目标系统现在将从您提供的目录中找到libs和字体,并且可以毫无问题地运行。希望这有帮助。
注意:我还没有尝试过,但即使您在不静态构建qt源的情况下提供Qt库,此脚本方法也应该有效。