银河麒麟 Qt 可执行文件打包说明

VPX-404飞腾板卡,麒麟(aarch64)使用 linuxdeployqt,把 ClientApp 和 Qt / 业务 .so 打到同一目录,整份拷走即可运行。


1. 准备可执行文件(Release)

  1. Qt Creator 打开 /data/xkun/project/ClientAppProject/ClientAppProject.pro
  2. 左下角选 Release
  3. 构建 → 执行 qmake ,再 重新构建

本机依赖库只编过 Debug(output/debug/lib 里带 d 后缀,如 libcustom_uid.so)。.pro 里 unix 的 Release 已改为链接这套库,否则会报 cannot find -lcustom_ui 等。

编出来的二进制一般在:

TEXT复制

复制代码
/data/xkun/project/ClientAppProject/ClientApp/release/ClientApp/ClientApp

或拷到发布目录(下文以此为准):

TEXT复制

复制代码
/data/xkun/project/ClientAppProject/ClientApp/release/lan404/ClientApp

确认是 ARM 可执行文件:

BASH复制

复制代码
file /data/xkun/project/ClientAppProject/ClientApp/release/lan404/ClientApp
# 应为:ELF 64-bit LSB shared object, ARM aarch64, dynamically linked

2. 下载 linuxdeployqt

官网:https://github.com/probonopd/linuxdeployqt/releases/tag/continuous

本机是 aarch64,必须下 ARM 版,不要下 x86_64。

BASH复制

复制代码
cd ~/桌面
mkdir -p linuxdeployqt && cd linuxdeployqt
wget -O linuxdeployqt-continuous-aarch64.AppImage \
  https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-aarch64.AppImage
chmod a+x linuxdeployqt-continuous-aarch64.AppImage
./linuxdeployqt-continuous-aarch64.AppImage --version

地址不能当命令敲,前面必须有 wget 或 curl -L -o。访问不了 GitHub 时用浏览器下载到同一目录。

若提示 FUSE / Cannot mount AppImage:

BASH复制

复制代码
./linuxdeployqt-continuous-aarch64.AppImage --appimage-extract
./squashfs-root/AppRun --version

本机验证过的版本:linuxdeployqt build 107,2025-10-21。


3. 放到发布目录

把 可执行文件 和 linuxdeployqt 都放到:

TEXT复制

复制代码
/data/xkun/project/ClientAppProject/ClientApp/release/lan404

目录里至少要有:

TEXT复制

复制代码
ClientApp
linuxdeployqt-continuous-aarch64.AppImage

必须先进入该目录,对 ./ClientApp 执行。

不要在 ~/桌面/linuxdeployqt 里对长绝对路径打包,会报:

TEXT复制

复制代码
FHS-like mode with PREFIX, fhsPrefix: "/../.."
ERROR: Could not find app-binary ""

4. 先让 ldd 能找到业务库

linuxdeployqt 要求 ldd ./ClientApp 没有任何 not found,否则会中止,例如:

TEXT复制

复制代码
ERROR: ldd outputLine: "libcustom_uid.so => not found"

先拷业务库和 Boost(本机实际用的是 debug 库):

BASH复制

复制代码
cd /data/xkun/project/ClientAppProject/ClientApp/release/lan404

cp -d /data/xkun/project/ClientAppProject/output/debug/lib/*.so* .
cp -d /data/xkun/soft/boost/boost_1_82_0/boost_1_82_0/stage/lib/libboost_*.so* . 2>/dev/null

export LD_LIBRARY_PATH="$PWD:$LD_LIBRARY_PATH"
ldd ./ClientApp | grep "not found"

没有输出才继续。若还缺 libasan(工程 unix 段开了 AddressSanitizer):

BASH复制

复制代码
cp -d /usr/lib/aarch64-linux-gnu/libasan.so* .

业务库通常包括:

  • libcustom_uid.so
  • libNetUnitBoostd.so
  • libHyFFTd.so
  • libdevice_driver_interfaced.so
  • libserver_core_interfaced.so
  • libHySpectrumd.so
  • libHyPxiApid.so
  • libHrDetectInterfaced.so

5. 执行 linuxdeployqt

qmake 必须是编这个程序的那一套(本机 Qt 5.12.8):

BASH复制

复制代码
cd /data/xkun/project/ClientAppProject/ClientApp/release/lan404
chmod +x ./ClientApp ./linuxdeployqt-continuous-aarch64.AppImage
export LD_LIBRARY_PATH="$PWD:$LD_LIBRARY_PATH"

./linuxdeployqt-continuous-aarch64.AppImage ./ClientApp \
  -qmake=/data/xkun/soft/qt/qt-everywhere-src-5.12.8/Qt-5.12.8/bin/qmake

成功标志:退出码 0,目录里出现 Qt 插件,例如:

BASH复制

复制代码
echo $?
ls -l plugins/platforms/libqxcb.so

正常完成后目录大致为:

TEXT复制

复制代码
AppRun
ClientApp
lib/
libcustom_uid.so
libdevice_driver_interfaced.so
libHrDetectInterfaced.so
libHyFFTd.so
libHyPxiApid.so
libHySpectrumd.so
libserver_core_interfaced.so
linuxdeployqt-continuous-aarch64.AppImage   # 打包工具
plugins/
qt.conf

若提示 Keeping existing AppRun 或 qt.conf already exists,且已经有 plugins/platforms/libqxcb.so,说明上次已经打过,可以不再打。

若 AppImage 不传参数(又出现 app-binary ""):

BASH复制

复制代码
./linuxdeployqt-continuous-aarch64.AppImage --appimage-extract
./squashfs-root/AppRun ./ClientApp \
  -qmake=/data/xkun/soft/qt/qt-everywhere-src-5.12.8/Qt-5.12.8/bin/qmake

解包残留不要留在发布目录里干扰下次打包:

BASH复制

复制代码
rm -rf squashfs-root

6. 运行

BASH复制

复制代码
cd /data/xkun/project/ClientAppProject/ClientApp/release/lan404
export LD_LIBRARY_PATH=.:./lib:$LD_LIBRARY_PATH
./ClientApp

或:

BASH复制

复制代码
./AppRun
相关推荐
SEO_juper1 小时前
手写 llms.txt 验证器:让 AI 更愿意引用你的网站(GEO)
开发语言·人工智能·python·聚类·seo·独立站
CCCCCCCCharlie1 小时前
从0到1:一个字节的磁盘之旅
linux·开发语言·c++
比兔代理1 小时前
纯净IP是什么?从IP信誉、黑名单与ASN角度原理解析
开发语言·php
benjiangliu1 小时前
恩培趣味计算机视觉-01-conda环境和Python库
开发语言·python·conda
我喜欢就喜欢1 小时前
DeepSeek Harness 开源贡献手记:从零到合入主线
开发语言·人工智能
Quz1 小时前
QML GridView 布局:网格排布与排列方向
qt
坐看风云变幻1 小时前
《嵌入式工程师的软硬件修仙之路》第 2 期|C 语言筑基:指针与内存模型
c语言·开发语言
Quz2 小时前
QML GridView 动态:增删过渡与滚动定位
qt
开开心心就好2 小时前
安卓PDF处理工具,免费无广告零弹窗
android·服务器·开发语言·算法·pdf·ocr