目录
打算工作
1.生成可执行文件
qt使用Release模式编译
【有的时侯编译后没有生成这个文件ubuntu运行bin文件,须要在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文件夹linux安全加固linux通配符,之后复制到文件夹“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
第一次容易报错:Permissiondenied
/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”执行成功后,双击该可执行文件图标也可以直接运行了,将其复制到桌面,也能双击运行ubuntu运行bin文件,这样便捷了好多](小编亲测)
(该项目打包好的文件:)
**参考链接:**