如何为其他Linux设备构建Lazarus Qt5程序 解决libQt5Pas.so.1缺失报错
报错根因
libQt5Pas.so.1是Lazarus IDE Qt5界面绑定的专用依赖库,不属于Linux发行版默认预装的基础库范畴,且不同发行版的库版本、路径规则存在差异,因此跨发行版运行时会出现找不到库的报错,报错信息如下:
./shortcutcreator: error while loading shared libraries: libQt5Pas.so.1: cannot open shared object file: No such file or directory.
解决方案
- 方案1:静态编译(兼容性最高,推荐分发场景使用)
打开Lazarus项目,进入项目选项 -> 编译选项 -> 链接设置,勾选静态链接选项;提前在Kubuntu 20开发环境安装静态编译依赖包libqt5pas-dev,重新编译项目即可。编译生成的二进制文件会内置所有依赖的库代码,无需额外携带依赖,缺点是最终文件体积会比动态编译版本大30%~50%。 - 方案2:制作便携依赖包
先用ldd shortcutcreator命令列出程序所有动态依赖,将libQt5Pas.so.1及其他非系统默认预装的依赖库复制到和程序同目录的文件夹中,编写启动脚本start.sh,内容如下:
给脚本添加执行权限:#!/bin/bash export LD_LIBRARY_PATH="$(dirname "$0")":$LD_LIBRARY_PATH exec "$(dirname "$0")/shortcutcreator" "$@"chmod +x start.sh,用户运行start.sh即可自动加载同目录的依赖库启动程序。 - 方案3:分发行版构建
如果目标用户集中在少数几个发行版,可以通过虚拟机或者容器搭建对应发行版的编译环境,在环境内安装Lazarus和libqt5pas-dev对应发行版包,分别编译生成适配各发行版的二进制文件,不需要额外携带依赖。 - 方案4:告知用户手动安装依赖
若面向技术用户,可以直接提示用户先安装对应发行版的libQt5Pas包即可运行:- Debian/Ubuntu系列:
sudo apt install libqt5pas1 - Fedora/RHEL系列:
sudo dnf install qt5pas - Arch系列:
sudo pacman -S qt5pas
- Debian/Ubuntu系列:
内容的提问来源于stack exchange,提问作者onurcano
相关产品推荐
相关产品推荐

