我正在使用 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
。