VPX-404飞腾板卡,麒麟(aarch64)使用 linuxdeployqt,把 ClientApp 和 Qt / 业务 .so 打到同一目录,整份拷走即可运行。
1. 准备可执行文件(Release)
- Qt Creator 打开
/data/xkun/project/ClientAppProject/ClientAppProject.pro - 左下角选 Release
- 构建 → 执行 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.solibNetUnitBoostd.solibHyFFTd.solibdevice_driver_interfaced.solibserver_core_interfaced.solibHySpectrumd.solibHyPxiApid.solibHrDetectInterfaced.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