打包大概分3步:
- 编程release版本
- 找出执行档所有依赖的链接库
- 压缩或者打成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
完事后打包完大概是这个样子
双击AppRun就可以在没有qt环境的系统下打开,你可能还会遇到其他错误,但终究会解决掉的!!
欢迎留言交流。