做网站最专业,大团企业网站制作,网站分析与优化的文章,佛山企业网站建设服务本文介绍如何打包Qt程序#xff0c;使其在没有安装Qt的系统可以运行。默认前提#xff1a;另外一个系统和本系统是同一个系统版本。1#xff0c;编写导出依赖包的脚本copylib.sh#!/bin/bashLibDir$PWD/libTarget$1lib_array($(ldd $Target | grep -o /.*使其在没有安装Qt的系统可以运行。默认前提另外一个系统和本系统是同一个系统版本。1编写导出依赖包的脚本copylib.sh#!/bin/bashLibDir$PWD/libTarget$1lib_array($(ldd $Target | grep -o /.* | grep -o /.*/[^[:space:]]*))$(mkdir $LibDir)for Variable in ${lib_array[]}docp $Variable $LibDirdone1234567891011121314更改可执行权限chmod ux copylib.sh122打开终端并进入到存放程序的(假设叫MyRelease)文件夹运行下面命令(假设程序叫MyApp)./copylib.sh MyApp12在此目录下会自动生成lib文件夹脚本实际上是调用了 ldd MyApp指令获得MyApp运行时需要哪些库并将库都复制放到当前目录的lib文件夹中。3、把lib里的所有文件剪切到 MyRelease目录下并删除此lib文件夹。4、进入QT的安装目录找到platforms文件夹本文路径是/opt/Qt5.3.1/5.3/gcc_64/plugins/platforms/12将整个platforms文件夹复制到MyRelease文件夹中注意这时复制的是整个文件夹这使得MyRelease文件夹中会多出一个platforms文件夹。5、将上文的copylib.sh放到MyRelease/platforms/中并运行./copylib.sh libqxcb.so12这时在当前目录会得到新的lib文件夹。将lib里的所有文件剪切到 MyRelease目录下并删除此lib文件夹6、在MyRelease文件夹中新建程序启动脚本MyApp.sh(脚本名称和App名称相同)#!/bin/shappnamebasename $0 | sed s,\.sh$,,dirnamedirname $0tmp${dirname#?}if [ ${dirname%$tmp} ! / ]; thendirname$PWD/$dirnamefiLD_LIBRARY_PATH$dirnameexport LD_LIBRARY_PATH$dirname/$appname $12345678910111213更改可执行权限chmod ux MyApp.sh127、测试程序修改Qt的安装路径名称如 /opt/Qt5.3.1/5.3 修改为 /opt/Qt5.3.1/5.311修改后运行程序时就不能找到安装目录里的库文件了。sudo mv /opt/Qt5.3.1/5.3/ /opt/Qt5.3.1/5.31112这样就可在本机上做测试了。在MyRelease文件夹下运行./MyApp.sh12可能会报错This application failed to start because it could not find or load the Qt platform plugin xcb.Available platform plugins are: xcb.Reinstalling the application may fix this problem.123456解决办法如果你修改了Qt安装路径名称现在先修改回来如sudo mv /opt/Qt5.3.1/5.311 /opt/Qt5.3.1/5.312在MyRelease文件夹发现存在了一个libQt5DBus.so.5库文件但他只是一个符号链接需要把它补全。[userlocalhost]$ locate libQt5DBus/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.la/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.prl/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3.1...123456789把这两个库文件/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3.1123拷贝到MyRelease文件夹下然后再次运行启动脚本。先修改路径(用以本地测试)sudo mv /opt/Qt5.3.1/5.3/ /opt/Qt5.3.1/5.31112运行启动脚本./MyApp.sh12OK程序启动成功。现在可以把MyRelease打包成压缩包拷贝到其他系统上去运行了。友情提示测试完毕如果修改了Qt安装路径不要忘记再修改回来。