Я использую Ubuntu 20.04 LTS и только что установил Awesome Tiling WM. Я сталкиваюсь с проблемой «ошибка поиска символа» при установке Rofi, хотя я могу найти символ в библиотеке, в которой он ищет, и я не знаю, что с этим делать.
Вот что я сделал:
Я устанавливаю Рофи с помощью
~$ sudo apt установить рофи
Но когда я запускаю его, я получаю
~$ рофи
rofi: ошибка поиска символа: ~/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: неопределенный символ: 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 к привязке клавиш в 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
Рофи не знает, что показать.
Пожалуйста, укажите режим, который вы хотите показать.
рофи-шоу {режим}
...
Но не из 32-битной папки:
/usr/lib/i386-linux-gnu$ rofi
rofi: ошибка поиска символа: /home/martin/anaconda3/envs/py37/lib/./libgdk_pixbuf-2.0.so.0: неопределенный символ: g_task_set_name
Я хотел бы помочь заставить Rofi работать, желательно путем решения проблемы, но обходные пути тоже были бы хороши.
Я также был бы признателен за помощь, просто чтобы понять, что происходит. Я не понимаю, как rofi занимается поиском библиотек и символов. Почему он не может найти символы в библиотеках? И почему rofi запускается только в двух из трех папок, содержащих библиотеку, хотя только в одной из этих двух папок есть библиотека с правильным символом?
заранее спасибо