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

Qt在Linux下的部署 (二)


创建应用程序包


在(类)Unix系统中并没有标准的包管理工具,接下来介绍的方法是一个较为通用的解决方案。你可以阅读特定主机系统上关于创建包的更多信息。


部署应用程序,相关的Qt库(在应用中使用的Qt模块),平台插件,和可执行文件的副本需在同一目录层次下。如果你的应用依赖于特定的编译库,这些库需与你的应用一同重新发布。获取更多信息,查看应用依赖关系部分。



接下来,我们将介绍关于插件的主题,但是目前主要的问题是,你必须保证动态链接器能够找到Qt库文件(当Qt以共享方式安装时)。除非另外说明,动态链接器不会到应用的目录下搜索(文件)。解决此问题,有很多方式:
    
          1.你可以在系统路径下安装Qt库(例如:在多数的系统中 /usr/lib)

          2.你可以向-rpath 命令行选项传递一个预先设定的路径,当应用开始时,动态链接器会到该路径下去查找(相应文件)

          3.你可以为应用写一个启动脚本,在脚本中更改你的动态链接器配置(例如:将你的应用目录添加到LD_LIBRARY_PATH环境变量中 )


备注:如果你的应用在运行时需要设置文件的"set user-id on execution"位(S_ISUID 04000 在文件执行时把进程的属主或组ID置为该文件的文件属主)或者需以root身份运行,在某些平台上,设置环境变量的方法就不可行了。


第一种方法的不足之处是用户需有超级用户权限。第二种方式的不足之处,在于用户可能没有足够的权限(将应用)安装到预定义的路径下。不论哪种情况,用户均无法在自己的主目录下安装应用。我们推荐使用更具灵活性的第三种方法,例如,plugandpaint.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 "$@"



运行此脚本而不是可执行文件,可以确保动态链接器找到Qt库。备注,你可以将此脚本重命名后,用于其它应用。


应用运行时会在应用目录下的插件(plugins)子目录中搜索相应插件。你可以将插件复制到插件(plugins)目录中,或是在插件(plugins)目录的项目文件中设置DESTDIR变量值。

DESTDIR = /path/to/Qt/plugandpaint/plugins



一个应用文档(应用发布包)应包含 运行 Plug & Paint 应用的Qt库,和所有的插件组。文件清单列表如下:

Component(组件) File Name(文件名)
The executable plugandpaint
The script to run the executable plugandpaint.sh
The Basic Tools plugin plugins\libpnp_basictools.so
The ExtraFilters plugin plugins\libpnp_extrafilters.so
The Qt xcb platform plugin platforms\libqxcb.so
The Qt Core module libQt5Core.so.5
The Qt GUI module libQt5Gui.so.5
The Qt Widgets module libQt5Widgets.so.5



在大多数的系统中,共享库的扩展名是.so 。一个例外是在HP-UX系统下,扩展名是.sl 。


如果你的应用依赖于特定的编译库,这些库应随应用一同重新发布。获得更多信息,阅读应用依存关系部分。


检验应用是否已被成功的部署,你可以在没有安装Qt和任何编译器的主机上,解压缩应用包,然后尝试运行。例如,可以运行plugandpaint.sh脚本。


另外一种可选的添加搜索路径的方法,是在程序运行时使用QApplication::addLibraryPath() 或者是 lication::setLibraryPaths()函数。

qApp->addLibraryPath("/some/other/path");




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值