文章首发于个人博客
事件
环境
| 项目 | 值 |
|---|---|
| 操作系统 | Debian 12 |
| 桌面环境 | xfce 4 |
| 输入法 | fcitx 5 |
背景
-
最早在
Debian上安装Lazarus是直接sudo apt install lazarus,即使用的是官方仓库的版本,也是戏称为万年不更新版。默认安装的是Gtk2版,该版存在中文输入法问题(输入法问题可参照解决Debian上Lazarus输入法问题);也可以把IDE改为Qt5版,同样可以使用中文输入法。 -
想用最新版
Lazarus 3.4,直接在官网下载最新的deb包,没有安装成功。 -
后来使用的是
fpcupdeluxe-x86_64-linux安装,即Gtk2版,但是由于官方并没有合并中文输入法的解决方案,每次升级都要再做一遍,麻烦。 -
现在,准备使用
fpcupdeluxe-x86_64-linux-qt5直接安装Qt5版。
问题
直接使用fpcupdeluxe-x86_64-linux-qt5安装,报错:
./fpcupdeluxe-x86_64-linux-qt5: error while loading shared libraries: libQt5Pas.so.1: cannot open shared object file: No such file or directory
是因为缺少libQt5Pas.so.1,安装libqt5pas-dev包:
sudo apt install libqt5pas-dev
再次安装,又报错:
./fpcupdeluxe-x86_64-linux-qt5: symbol lookup error: ./fpcupdeluxe-x86_64-linux-qt5: undefined symbol: QGuiApplication_setFallbackSessionManagementEnabled
先安装Gtk2版,再修改为Qt5版,编译还报错。编写普通的应用,编译为Qt5版,同样报错。
安装官方仓库的Lazarus 2.2,一切正常。
解决
去github上查看fpcupdeluxe相关的issues,说是要下载1.2.15版的libqt5pas,并安装:
sudo apt install ./libqt5pas1_2.15-1_amd64.deb ./libqt5pas-dev_2.15-1_amd64.deb
进一步查看,其实是因为Qt5删除/更新了部分接口导致不兼容了,而Debian 12的官方仓库中并未包含该更新,所以需要手动下载安装,Debian 13的官方仓库中已经包含了,像以前一样直接安装即可。