windeployqt工具 打包所需要的库文件

本文为转载文章,转自:https://www.cnblogs.com/liushui-sky/p/7852361.html

Qt官方开发环境默认使用动态链接库方式,在发布生成的可执行程序时,我们需要复制一大堆动态库,如果自己去复制动态库,很可能丢三落四,导致程序在别的电脑里无法正常运行。 因此 Qt 官方开发环境里自带了一个部署工具来帮助开发者自动拷贝大部分的依赖库。在不同的平台使用方式也有所不同。

1)       Windows平台

Windows开发环境下windeployqt工具 (如果你已经将Qt的bin目录加入PATH环境,那么你可以直接在命令行使用windeployqt调用.)。首先,将项目中的release文件中的可执行文件拷到一个新建的文件夹中,例如project.exe,用Qt自带的生成必备的dll文件的程序windeployqt,来把必要的动态库拷到该文件夹中,打开命令行,输入windeployqtproject.exe,这时候大部分的dll文件都自动拷贝过来了,但是如果项目还用了一些其他的SDK,比如OpenCV,Chartdir51等等,就需要手动将所需dll拷贝过来,如果不知道还需要哪些软件,可以用Dependency Walker来查看缺少哪些dll文件。

拷贝完成后文件夹下的文件清单如下:

注意:如果发布的应用是Qt Quick Application应用,那么命令行需要加上QML的安装目录。命令中的D:\Qt\Qt5.5.1\qml是qml的安装目录,请换成你自己的qml安装目录!!!!!

windeployqt hello.exe--qmldir D:\Qt\Qt5.5.1\qml

接下来要高大上的朋友就可以用Enigma VirtualBox软件虚拟化工具将多个文件封装到应用程序主文件,从而制作成为单执行文件的绿色软件。

2)       linux平台

在X11平台下qt程序,首先准备好程序中需要使用的资源,库和插件...,比如你的可运行程序取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(链接和共享库都要)放在同一目录下(也可以不同,只要小小修改下shell文件).plugins就不多说了。

在程序的同目录下,新建一個空文档,取名panel.sh (文件名与程序名同名,扩展名为sh,shell文件)。在panel.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$*

保存文件,退出。在终端給文件+x属性: 切换到程序的目录,输入

   chmod +x panel.sh

然后运行shell文件就行了(确保panel程序具备X属性),它会自动更改环境变量,运行程序。

如果要调试shell文件,只需要在终端输入:

   sh -x panel.sh

这样就ok了。

如果需要把执行程序制作成DEB或RPM包的话请参考链接:

Deploying aQt5 Application Linux: https://wiki.qt.io/Deploying_a_Qt5_Application_Linux

猜你喜欢

转载自blog.csdn.net/zccyy1010/article/details/82986789