二:windows使用QTCreator开发的程序发布在windows下
windows和Linux开发机QT版本:QT5.13.0
Linux开发机Ubuntu镜像版本:ubuntu-18.04.5-desktop-amd64.iso
Linux测试机(裸机)镜像:ubuntu-18.04.5-desktop-amd64.iso
windows开发的QT程序移植到Ubuntu18
假如工程文件名为test.pro
1.将windows下用MinGW编译生成的项目拷贝到Linux下,仅保留*.h,.c++,.pro,.ui文件以及resource文件夹(如果有resource则添加)。
2.在Ubuntu中环境变量export PATH= /Qt5.13.0/gcc_64/bin:$PATH
3.在Ubuntu中执行qmake
生成makfile
4.make
生成一个和pro文件名一样的可执行文件。比如test.pro生成可执行文件 test
5 ./test
打包发布:
可执行文件名为:test
**第一步.**把可执行程序复制到另一个文件夹/home/QT_release/LogIn_Qt
**第二步.**准备两个脚本放到/home/QT_release/LogIn_Qt
。
第一个脚本:test.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 "$@"
第二个脚本:XXX.sh(名字不需要相同,作用为获取需要的资源,但是会缺少两个so文件,需要手动添加。需要根据自己的路径修改)
假如设置为findLibs.sh
#!/bin/sh
exe="test" #你需要发布的程序名称
dest="/home/zh/QT_release/LogIn_Qt" #创建文件夹的位置
deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }')
cp $deplist $dest
注意脚本格式, 不能DOS格式,需要改成UNIX格式,可以通过UE 文件->转换->DOS转UNIX
第三步
此时/home/QT_release/LogIn_Qt
路径下共有3个文件,可执行文件test
,test.sh
和findLibs.sh
。
执行findLibs.sh
,自动将需要的动态库复制到LogIn_Qt
文件夹下,此时会发现/home/QT_release/LogIn_Qt
有很多so文件。
第五步
将LogIn_Qt
整个文件夹拷贝到测试机,测试机不需要安装QT,运行./test.sh
。
发现xcb错误!
解决办法:
1.在sh文件的同级路径下创建一个platforms路径
2.找到/home/Qt5.13.0/5.13.0/gcc_64/plugins/platforms
路径下的libqxcb.so
3.把libqxcb.so放到platforms下
运行./LLogin.sh
发现还是不行,(上边提过缺少两个so文件)
通过export QT_DEBUG_PLUGINS=1
发现缺少libQt5XcbQpa.so.5
在/home/Qt5.13.0/5.13.0/gcc_64/lib中,找到libQt5XcbQpa.so.5.13.0重命名成libQt5XcbQpa.so.5(注意不要复制软连接
),把这个动态库放到sh文件同级路径下。
再次运行./LLogin.sh
,发现缺少libQt5DBus.so.5
在/home/Qt5.13.0/5.13.0/gcc_64/lib中,找到libQt5DBus.so.5.13.0并重命名成libQt5DBus.so.5(注意不要复制软连接
),把这个动态库放到sh文件同级路径。
再次运行,成功!!!
这里是引用
https://blog.csdn.net/u014552102/article/details/81055865
https://blog.csdn.net/qq_27350133/article/details/83445258
https://blog.csdn.net/z3512498/article/details/64922180?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
windows使用QTCreator开发的程序发布在windows下
一:使用MSVC编译成release,windows下一定要是MSVC编译
二:
把release中生成的文件vitualketboard.exe放到桌面新的文件夹中C:\Users\zh\Desktop\keyboard
此时文件夹中只有一个文件vitualketboard.exe,此时双击exe提示缺少dll。
三:
**找到E:\qt\5.13.0\msvc2017_64\bin
下边的windeployqt.exe
。
四
使用cmd
回车!!
再到新的文件夹中会发现把需要的文件全部补齐,exe可以直接运行。
若不能运行,可参考https://blog.csdn.net/maoyeahcom/article/details/108583124进行调试!!!