准备工作
1.生成可执行文件
qt使用Release模式编译
【有的时候编译后没有生成这个文件,需要在pro文件里面加上一句:QMAKE_LFLAGS += -no-pie】
2.新建文件夹
在桌面新建一个文件夹“qt_ctrl”
3.新建.sh文件
在文件夹“qt_ctrl”里新建两个.sh文件
copylib.sh//用来找lib文件
#!/bin/bash
LibDir=$PWD"/lib"
Target=$1
lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))
$(mkdir $LibDir)
for Variable in ${lib_array[@]}
do
cp "$Variable" $LibDir
done
untitled.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 "$@"
4.寻找qt安装目录里的platforms文件夹
找到qt安装目录里的platforms文件夹,然后复制到文件夹“qt_ctrl”里。
小编的platforms文件夹路径为:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms
安装方式不同,路径可能不一样,有的在home,有的在opt。。。
(也可以参考路径:~/Qt5.9.5/5.9/gcc_64/plugins/platforms )
寻找lib文件
1.将copylib.sh放到可执行文件所在目录里:(build-untitled-unknown-Release)
然后执行:
chmod 777 copylib.sh
./copylib.sh untitled //untitled改成自己的可执行文件名
执行完后会生成一个lib文件夹
将这个lib文件夹里面的所有文件复制到文件夹“qt_ctrl”里。
将可执行文件“untitled”也复制到文件夹“qt_ctrl”里。
2.将copylib.sh放到qt_ctrl/platforms目录里
然后执行:
chmod 777 copylib.sh
./copylib.sh libqxcb.so
同样,在platforms目录也会多出一个lib文件夹
将这个lib文件夹里面的所有文件复制到文件夹“qt_ctrl”里。
至此,所有的lib文件都已经准备齐全了。。。
跨平台运行
将“qt_ctrl”文件夹复制到其他电脑的ubuntu系统下就可运行
注意:运行时不能直接运行可执行文件,需要运行与之同名的.sh文件(untitled.sh)
chmod -R 777 untitled.sh
./untitled.sh
第一 次容易报错:Permission denied
/home/chenxd/qt_ctrl/untitled.sh: 12: /home/chenxd/qt_ctrl/untitled.sh: /home/chenxd/qt_ctrl/untitled: Permission denied
解决:
sudo chmod -R 777 /home/chenxd/qt_ctrl
sudo chmod -R 777 /home/chenxd/qt_ctrl/untitled.sh
/home/chenxd/qt_ctrl/untitled.sh
(注意改为自己文件路径)
[以后运行直接进入untitled.sh所在目录,执行:./untitled.sh就可以了](网络传言)
[小编发现当第一次“./untitled.sh”执行成功后,双击该可执行文件图标也可以直接运行了,将其复制到桌面,也能双击运行,这样方便了很多](小编亲测)
(该项目打包好的文件:https://download.csdn.net/download/xx970829/15992965)
**参考链接:**https://blog.csdn.net/z3512498/article/details/64922180