linux 使用 navicat 报错的各种问题

我是凝思系统,使用的一些系统库可能比较旧吧,容易报错,记录一下解决过程

(尽量不要手动编译库,能rpm之类的安装,就走rpm)

1、报错 1

/tmp/.mount_DOKybL/AppRun: symbol lookup error: /tmp/.mount_DOKybL/usr/lib/libgio-2.0.so.0: undefined symbol: g_option_group_unref

查阅资料是 glib 版本的问题

[Solved]navicat report error after update system / Applications & Desktop Environments / Arch Linux Forums

所以编译新版 glib,我用的是 glib 的 2.68.4 分支,旧的版本有些符号有问题

https://github.com/GNOME/glib/tree/2.68.4

编译方法

参照

 1_04_GLib库入门与实践_GLib库的编译_field1003的博客-CSDN博客_libglib

glib 的依赖库可以参照上面链接,我是缺了 libffi-dev

meson 和 ninja 命令是 pip3 安装出来的,如 pip3 install meson ninja

安装完 meson 和 ninja 后,可以把命令软链接到 /usr/bin/ 下 ,方便使用

运行下面命令进行编译安装 glib 库 (早期 glibc 版本貌似可以直接 make 方式编译,后来才改成 meson 和 ninja 编译的)

meson build
# meson build --prefix=/usr
# 可以指定安装目录
ninja -C build
ninja -C build install

编译完了库默认安装到

/usr/local/lib/x86_64-linux-gnu/

临时使用上面这个库,使用

export LD_LIBRARY_PATH=/usr/local/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH

如果要永久生效,需要写入 .bash_profile 文件,或者直接安装到系统库里 (基础库直接安装系统库可能有风险)

2、报错 2

/tmp/.mount_CjKps5/AppRun: symbol lookup error: /tmp/.mount_CjKps5/usr/lib/libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format

查阅资料是 freestyle 版本问题,旧的版本有些符号有问题

linux - Qt startup error: symbol lookup error: libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format - Super User

有人分析了 libfreetype 的符号,确定是 libfreetype 的问题

#readelf -s /usr/local/freetype/lib/libfreetype.so | grep -i font_format
    95: 000000000001a640    43 FUNC    GLOBAL DEFAULT   11 FT_Get_X11_Font_Format
   265: 000000000001a610    43 FUNC    GLOBAL DEFAULT   11 FT_Get_Font_Format

所以编译新版 freestyle, 我用的是 freestyle 的 2.6.5 分支, freestyle 最新版本好像要下载子模块

https://github.com/freetype/freetype/tree/2.6.5

编译命令

./autogen.sh
./configure --prefix=/usr/local/freetype
make
make install

编译完了库默认安装到

/usr/local/freetype/lib

临时使用上面这个库,使用

export LD_LIBRARY_PATH=/usr/local/freetype/lib:$LD_LIBRARY_PATH

如果要永久生效,需要写入 .bash_profile 文件,或者直接安装到系统库里 (基础库直接安装系统库可能有风险)

题外话

从前面链接

[Solved]navicat report error after update system / Applications & Desktop Environments / Arch Linux Forums

学到,可以从 AppImage 文件提取里面的文件

mkdir src
mount -o loop navicat15-premium-cs.AppImage src
cp -r src squashfs-root
umount src
rmdir src

然后还可以把提取出来的文件再镜像打包

appimagetool squashfs-root navicat15-premium-cs.AppImage

也许可以直接把编译好的库文件扔到镜像包里,不过我没实验

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值