参考官方链接:https://doc.qt.io/qt-5/linux-deployment.html
我的项目名:videoPlayer;编译器:DeskTop Qt 5.9.9 gcc 64bit
一、新建一个空白目录:
把编译出来的可执行程序复制过来
mkdir player
cp ~/Workspzce/Qt/videoPlayer/release/videoPlayer ./
二、新建两个文件
1、pack.sh
此文件名可随便取名,用于复制可执行程序依赖包,到当前文件夹的./lib目录下
#!/bin/sh
exe=$1
des=$PWD"/lib"
deplist=$(ldd $exe | awk '{if(match($3,"/")){printf("%s\n"),$3}}')
cp $deplist $des
2、videoPlayer.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 "$@"
完事了给两个文件 可行性权限
sudo chmod +x *.sh
三、重点来了
//1、把自己项目的依赖库全搞出来
cp pack.sh ~/Workspzce/Qt/videoPlayer/release///进入自己的项目路径release下
cd ~/Workspzce/Qt/videoPlayer/release
mkdir lib
./pack.sh videoPlayer//此处参数为自己的可执行程序名
cd ./lib
cp * ~/player
/*
2.添加 libqxcb.so相关依赖库
否则在其它主机运行时,会遇到如下错误
This application failed to start because it could not find or load the Qt platform plugin “xcb”
以下摘自官网:
All Qt GUI applications require a plugin that implements the Qt Platform Abstraction (QPA) layer in Qt 5. For Linux/X11, the name of the platform plugin is libqxcb.so. This file must be located within a specific subdirectory (by default, platforms) under your distribution directory. Alternatively, it is possible to adjust the search path Qt uses to find its plugins, as described below.
*/
cp pack.sh ~/Qt5.9.9/5.9.9/gcc_64/plugins/platforms//进入到自己的Qt安装目录
cd /home/ubuntu/Qt5.9.9/5.9.9/gcc_64/plugins/platforms
mkdir lib
./pack.sh libqxcb.so
cd lib
cp * ~/player
cd ../../
cp platforms -R ~/player
到这里 基本结束。可以打包到其他主机测试了。