我只想提供可执行文件,或许让其他用户(也运行 ubuntu)下载 qt5 库(非开发版本)才能运行该应用程序。
我对编译 qt 的静态版本不感兴趣,只是为了使这个可执行文件自包含。
我继续检查ldd
以获得似乎必要的特定库
sudo apt-get install libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5printsupport5
说我已经安装了最新版本。
应用程序仍然无法运行。出了什么问题?我应该获取哪些运行时库才能使可执行文件找到所有符号?
答案1
我相信有几种方法可以使用。我在下面列出了一种方法,这是我在评论中给出的部署文档中推荐的方法。
我在本例中使用了一个名为 HelloWorld 的标准新 Qt Widgets 应用程序项目,该项目已在发布模式下编译,生成的文件名为“HelloWorld”。本例还假设您使用的是 x64。
假设我们从名为 MyApp 的根文件夹开始,将“HelloWorld”可执行文件复制到其中。然后需要将以下库从 QtInstallationFolder/gcc_64/lib 复制到此文件夹:
- 利比库数据
- libicui18n
- 利比库克
- 库Qt5Core
- 库Qt5DBus
- 库Qt5Gui
- libQt5Widgets
- libQt5XcbQpa
另外,将以下库从 QtInstallationFolder/gcc_64/plugins/platforms 复制到 MyApp/platforms:
- 库
将以下内容复制并粘贴到文本编辑器中,然后将其保存到 MyApp 文件夹中作为 HelloWorld.sh:
#!/bin/sh
appname=`basename $0 | sed s,\.sh$,,`
dirname=`dirname $0`
tmp="${dirname#?}"
if [ "${dirname%$tmp}" != "/" ]; then
dirname=$PWD/$dirname
fi
LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
$dirname/$appname "$@"
然后,您应该能够使用以下命令从应用程序根文件夹运行该应用程序:
./HelloWorld.sh
以上内容代表 GUI 应用程序所需的最少库。如果您将此方法用于应用程序,并且该应用程序使用了除上述库之外的任何其他库,您还需要将这些库复制到根 MyApp 文件夹。此外,当您创建 .sh 文件时,请使用应用程序的名称。
希望有所帮助。