如何修复 Ubuntu 22.04 上 Digikam 的未定义符号错误

如何修复 Ubuntu 22.04 上 Digikam 的未定义符号错误

我已经将多台计算机从 Ubuntu 21.10 升级到 22.04。更新后,我无法在其中一台计算机上运行 DigiKam。我尝试删除、清除并重新安装 digikam、libgdal 和 libblosc1 - 但没有成功。DigiKam 在打开任何窗口甚至启动画面之前就停止了。

$ digikam
digikam: symbol lookup error: /lib/libgdal.so.30: undefined symbol: blosc_cbuffer_validate
$ 

我尝试在 libgdal 中找到该符号 ( blosc_cbuffer_validate)。该符号确实在库中未定义,但在我的其他计算机上也是如此,而 digikam 可以正常启动。

$ nm -gD /lib/libgdal.so.30 | grep blosc_cbuffer
                 U blosc_cbuffer_validate 
$

我想知道无法再运行 DigiKam 的计算机与其他计算机有何不同,只能想到这两个区别:

  • 在升级到 Ubuntu 22.04 之前安装了 DigiKam
  • 它配备 AMD Ryzen CPU,而其他产品配备 Intel i7。

问题可能出在哪里?我该如何解决?如果没有解决方案,我该如何缩小问题范围?

答案1

它定义在libblosc1

$ sudo apt install libblosc1

并验证:

$ nm -gD /usr/lib/libblosc.so.1 | grep blosc_cbuffer
0000000000004580 T blosc_cbuffer_complib
0000000000004530 T blosc_cbuffer_metainfo
0000000000004440 T blosc_cbuffer_sizes
00000000000044b0 T blosc_cbuffer_validate
0000000000004570 T blosc_cbuffer_versions

更新:请提供输出$ ldd digikam

更新:它正在加载错误的文件,/opt可以通过以下方法修复:

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libblosc.so.1 digikam

或者通过更改LD_LIBRARY_PATH或删除中的版本/opt

相关内容