Qt for Linux/X11 - Deployment Qt在Linux下的部署 (一)

来源:互联网 发布:大智慧大数据终端 编辑:程序博客网 时间:2024/05/15 18:11


个人翻译,仅供参考。原网页:点击打开链接


Qt在Linux下的部署 (一)



这份文档讨论Qt在Linux下的特定部署问题。我们将使用Qt用例目录中的Plug&Paint(例子)来演示部署的步骤。


因为(类)Unix系统的(版本)数量激增(例如商业版的Unix,Linux的发行版等),在(类)Unix上的部署是个复杂的主题。在开始之前,我们需了解,在特定(类)Unix版本上编译的程序可能不会在另外版本的(类)Unix系统上正常运行。例如,除非你使用一个交叉编译器,你不能在Irix系统上编译(应用),而在AIX系统上发布。


(部署Qt以)静态链接(方式):


静态链接通常是在(类)Unix上发布应用的最安全和容易的方式。(因为)这种方式,可以不用(重复)分发Qt库,并保证库位于目标系统上的默认库搜索路径。

静态地编译创建Qt:

使用这种方法,你需首先安装一个静态版本的Qt库(或译为 以静态方式安装):

cd /path/to/Qt./configure -static -prefix /path/to/Qt <other parameters>make sub-src


我们指定prefix(参数),避免覆盖已安装的Qt。以上的例子只创建(编译)Qt库,样例和Qt Designer 不会被编译。当 make命令运行完后,Qt库会被复制到/path/to/Qt/lib 目录下。

注意,当使用静态Qt库链接应用,你不必添加更多库到项目文件中的LIBS行中。(库引用行)
获得更多的信息,看 Application Dependencies  部分。

用静态版本的Qt链接应用


一旦静态编译Qt,下一步就是重写make文件(makefile),和重新编译应用。首先,进入包含应用的目录下。

cd /path/to/Qt/examples/tools/plugandpaint

现在用qmake为应用创建一个新的makefile,并重新创建(编译)静态链接的可执行文件。


make cleanPATH=/path/to/Qt/bin:$PATHexport PATHqmake -config releasemake



你可能想要链接发行版的库,你可以用qmake做到。注意,我们需要设定路径,指定我们刚刚创建的静态Qt。


确定应用真正(可以)静态地链接到Qt,使用ldd工具(在类Unix多数版本可用):

ldd ./application

并验证Qt库(相关信息)在输出结果没有出现。

现在,假设编译和链接均未出现任何错误,下一步,需要部署一个plugandpaint文件。


去验证这个应用程序是否可以单独运行在没有安装Qt或者Qt应用程序的机器环境中,
一个简单的方式是,你可以将应用拷贝到该机器,并在该机器上运行。

记住:如果你的应用程序依赖于特定的库,(这些特定的库)应随应用一并发布。
获得更多信息,访问 应用依存关系  Application Dependencies部分。

Plug&Paint例子包含几个组件:核心应用(Plug&Paint),Basic Tools 和Extra Filters 插件。因为我们以静态链接的方式部署这些插件,以上所部署的可执行文件并不完整。虽然这个应用可以运行,但因缺少插件,部分功能是不能使用的,而部署带有插件的应用,我们应该使用共享库的方式。


(部署Qt)共享库(的方式)


当使用共享库的方式来部署Plug&Paint应用时,有两个难点:


1.Qt运行时(runtime),应随应用程序一并分发,
2.相应的插件需被安装在目标系统的正确路径下,以便应用程序可以找到它们。



编译Qt(并作为共享库)


我们假设你已经以共享库的方式在路径 /path/to/Qt 安装了Qt(这是安装Qt的默认安装选项)


将应用链接到作为共享库的Qt


当确保Qt作为共享库安装后,我们可以编译Plug&Paint应用。首先,切换到包含应用的目录下


<span style="font-size:18px;">cd /path/to/Qt/examples/tools/plugandpaint</span>


用qmake为应用创建新的makefile,并重新创建动态链接可执行文件


<span style="font-size:18px;">make cleanqmake -config releasemake</span>


上面的指令是编译应用的核心部分,下面是创建插件部分:

<span style="font-size:18px;">cd ../plugandpaintpluginsmake cleanqmake -config releasemake</span>


如果所有的编译和链接步骤都没有报错,我们会得到plugandpaint可执行文件,和libpnp_basictools.so,libpnp_extrafilters.so插件文件。



0 0
原创粉丝点击