环境:QT5.14.2 Ubuntu16.04
目录结构
在Ubuntu系统里面编译好文件后,ldd 查看程序相关的依赖库
- 新建一个lib文件夹
copy.sh内容如下,主要是将ldd找到的库文件复制到lib文件夹下
#! /bin/bash
#执行脚本时在终端输入 ./copy.sh ./test ./copy
#其中./test为ldd所要查看的可执行程序的路径,./copy为依赖文件最终拷贝到的文件夹路径
#以下三个参数为终端输入
# $0 为 ./copy.sh
# $1 为 ./test
# $2 为 ./copy
# awk 后 $0,$1,$2为终端日志的字符串,以空格为分隔符,只在awk本行起作用
#将字符串重定向到dependList
dependList=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )
#输出 ./test
#echo $1
#拷贝依赖
cp $dependList $2
#拷贝可执行程序
cp $1 $2
- 给copy.sh添加运行权限
sudo chmod +x copy.sh
./copy.sh qmltest ./lib/
- 新建qt.conf文件
[Paths]
Prefix = ./
Plugins = plugins
- 把qt 安装目录下的plugins中的platforms文件夹拷贝出来
sudo find / -name “Qt”
解决方式:在发布程序目标系统目录下运行
export LD_LIBRARY_PATH=’/home/XX/Desktop/XXX/lib’:$LD_LIBRARY_PATH
遇到问题:
qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “” even though it was found.
此问题是缺少相关的so库,还是要到qt安装环境下去找到相关的库,复制过来;比较笨的方法是排除法,将qt中的 /home/XXX/Qt5.14.2/5.14.2/gcc_64/lib 文件夹内所有内容都复制出来,再把不需要的so库或者其他文件删除,保证