I'm using Ubuntu 20.04 LTS and I just installed Awesome Tiling WM. I run into "symbol lookup error" issues when installing Rofi, even though I can find the symbol in the library it is looking in, and I don't know what to do about that.
Here's what I did:
I install Rofi with
~$ sudo apt install rofi
But when I run it, I get
~$ rofi
rofi: symbol lookup error: ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: undefined symbol: g_task_set_name
However, the symbol g_task_set_name
is in the library at that location:
~$ 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
(I've seen elsewhere that the version of these symbols matter, but I'm not seeing any version after this symbol. I don't know what that means, some of the other symbols in that library show version after the name.)
Furthermore, when I run rofi from inside the folder with the library there is no problem:
~/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.
In the end I want to add rofi to a key binding in awesomeWM. So a work around might be to have the command always run from this folder somehow. But I don't know how to do that.
While trying to solve the issue more thoroughly I get more confused. I find the same library in two other locations, one for 32-bit and one for 64-bit.
~$ 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
The symbol in neither of these libraries:
~$ 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
(with identical output for the library in the i386 folder). But rofi still runs from the 64-bit folder:
/usr/lib/x86_64-linux-gnu$ rofi
Rofi is unsure what to show.
Please specify the mode you want to show.
rofi -show {mode}
...
But not from the 32-bit folder:
/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
I'd like help to get Rofi working, preferably through solving the problem but workarounds would be good too.
I'd also appreciate help just to understand what is going on. I don't understand how rofi goes about looking for libraries and symbols. Why can't it find the symbols in the libraries? And why does rofi only run in two of the three folders containing the library, even though only one of those two folders has a library with the right symbol?
Thanks in advance