如何在未安装Qt的系统上运行Qt应用程序?

如何在未安装Qt的系统上运行Qt应用程序?,qt,deployment,fedora,qtwebkit,Qt,Deployment,Fedora,Qtwebkit,我已经使用QtWebKit、Qt4制作了一个应用程序。我用Fedora 16生成了二进制文件。现在,我想在另一台没有安装Qt的PC上运行该应用程序(运行其他Fedora版本)。如何打包我的Qt应用程序,使其能够在未安装Qt的平台上运行?是否有任何命令行实用程序以及QtCreator实用程序来执行此操作。我尝试了“deploy all”命令,但没有任何效果。显然,您需要访问qt库,它们与您编译应用程序时使用的版本完全相同 有两种选择: 静态链接qt库 创建RPM包(请参见如何创建) 还要检查。

我已经使用QtWebKit、Qt4制作了一个应用程序。我用Fedora 16生成了二进制文件。现在,我想在另一台没有安装Qt的PC上运行该应用程序(运行其他Fedora版本)。如何打包我的Qt应用程序,使其能够在未安装Qt的平台上运行?是否有任何命令行实用程序以及QtCreator实用程序来执行此操作。我尝试了“deploy all”命令,但没有任何效果。

显然,您需要访问qt库,它们与您编译应用程序时使用的版本完全相同

有两种选择:

  • 静态链接qt库
  • 创建RPM包(请参见如何创建)

还要检查。

使用Qt安装程序框架创建一个安装程序,只需提供所有需要的共享库(Win/OSX)或静态编译即可。在Linux下,系统范围的库和捆绑的库之间总是存在问题。文档应该为您提供一个良好的开端

因为您正在使用rpm部署Qt 4 rpm可用的系统,除了简单地向rpm的SPEC文件添加对Qt的依赖之外,您不需要做任何事情。使用
yum localinstall
安装软件包的用户将自动安装Qt依赖项。这是正确的做法-它将保持你的包裹小

当然,对于每个fedora/centos主要版本,您都需要一个单独的rpm构建,但这几乎总是一个要求


如果您的软件包需要比平台软件包提供的版本更新的Qt版本,您仍然可以建立特定的版本依赖关系(例如Qt>=4.7.0),并拥有一个自述文件,表明可以从第三方存储库(epel等)获取更新的软件包。

,以便在我使用的Linux下进行部署

部署之前的主要工作是检查依赖关系。可以使用以下命令执行此操作:

ldd appName | grep libQt

之后,您将看到依赖项列表。您必须设置环境变量LD_LIBRARY_PATH,让链接器知道您的库在哪里。为此:

export LD_LIBRARY_PATH=.
。表示当前目录

在那之后:

./appName $*

之后,您就可以使用Bitrock安装工具的可执行文件了。

是的,我理解静态链接。但是,qt creator或qmake中是否有静态构建应用程序的选项。add CONFIG+=static并提供静态构建的qt看起来在linux中静态构建qt是一个糟糕的选项。更好的方法可能是rpm。但是,我觉得这并不简单。因为rpm需要在/usr/lib路径上安装qt库。另外,我不确定elf是否与它兼容。对于rpm,我应该知道需要哪些库。这需要安装受支持的qt库的内部知识。这也不是直截了当的。我需要找出应用程序所需的直接和间接库。@我可以在不同的目录中安装库,而不必在
/usr/lib/
下安装。没有人说这个过程很简单。您还可以提供源文件,无需担心安装问题。