Rofi:符号查找错误:libgdk_pixbuf-2.0.so.0:未定义符号:g_task_set_name。但它就在那里!

Rofi:符号查找错误:libgdk_pixbuf-2.0.so.0:未定义符号:g_task_set_name。但它就在那里!

我正在使用 Ubuntu 20.04 LTS,刚刚安装了 Awesome Tiling WM。安装 Rofi 时遇到“符号查找错误”问题,尽管我可以在它正在查找的库中找到符号,但我不知道该怎么办。

这是我所做的:

我使用以下方式安装 Rofi

~$ sudo apt install rofi

但是当我运行它时,我得到了

~$ rofi
rofi: symbol lookup error: ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: undefined symbol: g_task_set_name

然而,符号g_task_set_name 在图书馆的以下位置:

~$ nm -D --with-symbol-versions ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0 | grep g_task_set_name
             U g_task_set_name

(我在其他地方看到这些符号的版本很重要,但我没有看到这个符号后的任何版本。我不知道这意味着什么,该库中的其他一些符号在名称后显示版本。)

此外,当我从包含库的文件夹内部运行 rofi 时,没有任何问题:

~/anaconda3/envs/py37/lib$ rofi
Rofi is unsure what to show.
Please specify the mode you want to show.

rofi -show {mode}

The following modi are enabled:
 * window
 * run
 * ssh

The following can be enabled:
 * windowcd
 * drun
 * combi
 * keys

To activate a mode, add it to the list of modi in the modi setting.

最后,我想将 rofi 添加到 awesomeWM 中的键绑定中。因此,一种解决方法可能是让命令始终以某种方式从此文件夹运行。但我不知道该怎么做。

当我尝试更彻底地解决这个问题时,我变得更加困惑。我在另外两个位置找到了相同的库,一个用于 32 位,一个用于 64 位。

~$ dpkg -S libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0
libgdk-pixbuf2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:i386: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0
libgdk-pixbuf2.0-0:i386: /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0.4000.0

这些库中均没有的符号:

~$ nm -D --with-symbol-versions /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 | grep g_task_set_
                 U g_task_set_return_on_cancel
                 U g_task_set_source_tag
                 U g_task_set_task_data

(与 i386 文件夹中的库的输出相同)。但 rofi 仍然从 64 位文件夹运行:

/usr/lib/x86_64-linux-gnu$ rofi
Rofi is unsure what to show.
Please specify the mode you want to show.

    rofi -show {mode}

...

但不是来自 32 位文件夹:

/usr/lib/i386-linux-gnu$ rofi
rofi: symbol lookup error: /home/martin/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: undefined symbol: g_task_set_name

我希望得到帮助以使 Rofi 正常工作,最好是通过解决问题,但变通方法也很好。

我也非常感激您的帮助,以便了解发生了什么。我不明白 rofi 如何寻找库和符号。为什么它找不到库中的符号?为什么 rofi 只在包含库的三个文件夹中的两个文件夹中运行,即使这两个文件夹中只有一个包含正确符号的库?

提前致谢

答案1

您必须从环境变量中排除 Anaconda $PATH$LD_LIBRARY_PATH然后重试运行rofi

相关内容