打包大概分3步:

  1. 编程release版本
  2. 找出执行档所有依赖的链接库
  3. 压缩或者打成deb包

第一步和第三都很简单,关键是第二步 本着复杂易出错的事情交给工具做的原则,介绍本期的主角 linuxdeployqt

先从github上获取源码 https://github.com/probonopd/linuxdeployqt

编译源码

在src/linuxdeployqt下面有MakeList.txt

root@yanfa-laptop:~/2020/src/linuxdeployqt# cmake .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
--这里省略N步
-- Configuring done
-- Generating done
-- Build files have been written to: /root/2020/src/linuxdeployqt

有了MakeFile 然后make

root@yanfa-laptop:~/2020/src/linuxdeployqt# make 
Scanning dependencies of target linuxdeployqt_automoc
[ 20%] Automatic moc for target linuxdeployqt
[ 20%] Built target linuxdeployqt_automoc
Scanning dependencies of target linuxdeployqt
[ 40%] Building CXX object tools/linuxdeployqt/CMakeFiles/linuxdeployqt.dir/main.cpp.o
[ 60%] Building CXX object tools/linuxdeployqt/CMakeFiles/linuxdeployqt.dir/shared.cpp.o
[ 80%] Building CXX object tools/linuxdeployqt/CMakeFiles/linuxdeployqt.dir/linuxdeployqt_automoc.cpp.o
[100%] Linking CXX executable linuxdeployqt
[100%] Built target linuxdeployqt

到这里一般不会有问题,可以看见我们已经生成了 linuxdeployqt,然后我们将它移动到bin目录下,这样方便我们全局使用

root@yanfa-laptop:~/2020/src/linuxdeployqt/tools/linuxdeployqt# mv linuxdeployqt /usr/local/bin/
root@yanfa-laptop:~# linuxdeployqt 
linuxdeployqt 6 (commit 1a4d4ea), build <local dev build> built on 2020-11-11 02:50:13 UTC

Usage: linuxdeployqt <app-binary|desktop file> [options]

可以看见当前我们输入linuxdeployqt时,已经可以看见他的版本和手册了,接下来我们在.bashrc里面配置一下qt的环境变量(请注意路径)

export PATH=/opt/Qt5.7.1/5.7/gcc_64/bin:$PATH
export LD_LIBRARY_PATH=/opt/Qt5.7.1/5.7/gcc_64/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=/opt/Qt5.7.1/5.7/gcc_64/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/opt/Qt5.7.1/5.7/gcc_64/qml:$QML2_IMPORT_PATH

 这个时候已经可以使用了 linuxdeployqt /你执行档的路劲/执行档 -appimage  你有可能会报跟我一样的错,但是如提示,安装下patchelf 就好了

ERROR: Could not start patchelf. Process error is "execvp: 没有那个文件或目录"
apt install patchelf

完事后打包完大概是这个样子

package

双击AppRun就可以在没有qt环境的系统下打开,你可能还会遇到其他错误,但终究会解决掉的!!

欢迎留言交流。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐