|
qt的客户端软件打包为deb安装到另外一台ubuntu20.04系统
参考:https://blog.csdn.net/qq_35605018/article/details/107808787
- #!/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 "$@"
复制代码
- #!/bin/sh
- if [ ! -d "./dep" ]; then
- mkdir ./dep
- else : then
- rm -rf ./dep
- mkdir ./dep
- fi
- ldd ./deb_fabu |cut -d ">" -f 2|grep lib|cut -d "(" -f 1|xargs tar -chvf ./dep/deb_fabu.tar
- echo "ok"
复制代码
- package: fabu
- version: 0.0.1
- architecture: amd64
- maintainer: jiangjinju
- description: jiangjinju deb fabu demo
复制代码
- [Desktop Entry]
- Encoding=UTF-8
- Name=fabu
- Exec=/usr/local/deb_fabu/deb_fabu.sh
- Icon=/usr/share/icons/jiang.png
- Comment="released_on_2023_05_10"
- Terminal=false
- Type=Application
- Categories=Development
复制代码
报错解决,最终成功的:
dayao@dayao-Default-string:/usr/local/dayaovhf$ ./dayaovhf
./dayaovhf: /lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.15' not found (required by ./dayaovhf)
这是没有找到对的库文件so
dayao@dayao-Default-string:/usr/local/dayaovhf$ ./dayaovhf
./dayaovhf: symbol lookup error: /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: undefined symbol: _ZN22QWindowSystemInterface24setPlatformFiltersEventsEb, version Qt_5_PRIVATE_API
这是没有找到对的库文件so
dayao@dayao-Default-string:/usr/local/dayaovhf$ ./dayaovhf
Cannot mix incompatible Qt library (5.12.8) with this library (5.15.2)
已放弃
混合了 版本冲突 找到了对应的库文件 但是内部版本不一致导致 也就是说所有的库文件都要是同一个版本的才行
我把开发qt的安装目录下的所有so打包:/home/jiang/jjj_qt_works/QT5.15.2_jjj/5.15.2/gcc_64/lib
拷贝到另外一台待部署的电脑 并设置环境变量
export LD_LIBRARY_PATH=/home/dayao/jiang_works/qt5.15.2_libs/libLD_LIBRARY_PATH 就是这个哦(另外一台机器)
发现:以上所有问题解决,原则上不需要这么多so,可以通过初步删除的方式减少
dayao@dayao-Default-string:/usr/local/dayaovhf$ ./dayaovhf
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
已放弃 libqxcb.so
解决:需要把platforms/libqxcb.so复制到可执行文件同级(deb打包的)
而这个文件libqxcb.so的来源(qt的安装目录、版本一致):
/home/jiang/jjj_qt_works/QT5.15.2_jjj/5.15.2/gcc_64/plugins/platforms/libqxcb.so
dpkg -b project/ dayaovhf_0.0.4_amd64.deb
sudo dpkg -i dayaovhf_0.0.4_amd64.deb
sudo dpkg -P dayaovhf
部署后的调用顺序:dayaovhf.desktop---> dayaovhf.sh ----> dayaovhf
因为这个 *.sh文件里面可以设置 export LD_LIBRARY_PATH 所以终端.bashrc中就不需要设置LD_LIBRARY_PATH了
整个成功的项目打包文件:project_success.zip放附件
|
|