Поскольку я установил ubuntu на свой ноутбук, у меня возникла проблема с gstreamer, которая влияет на многие программы, использующие его, totem, kdenlive, даже gnome-control-center, и мешает им работать.
Возвращаемое сообщение об ошибке:
totem: ошибка поиска символа: /lib/x86_64-linux-gnu/libgstaudio-1.0.so.0: undefined symbol: gst_aggregator_simple_get_next_time
или
kdenlive: ошибка поиска символа: / lib / x86_64-linux-gnu / libgstvideo-1.0.so.0: неопределенный символ: gst_aggregator_simple_get_next_time
Я заглянул на веб-сайт gstreamer , чтобы узнать, что это за ошибка. Насколько я понимаю, файл .so - это функции для сбора библиотек, которые могут быть вызваны различными программами. GstBase.Aggregator кажется классом, а simple_get_next_time - методом, возвращающим некоторое целое число. Мои последние компьютерные уроки довольно далеко по времени, но мне кажется, что такого рода проблема является «структурной», я имею в виду, что функция не распознает некоторые методы класса. Я попытался переустановить все программы, плагины и прочее gstreamer, но проблема все еще существует. Итак, я сделал гипотезу, что этот класс был плохо запрограммирован. Это не работает, потому что я посмотрел на www: кажется, я единственный, кто столкнулся с этой конкретной проблемой.
Вопрос в том, что я использую очень общие программы с новыми установками, которые работают без ошибок для всех, поэтому как я могу столкнуться с такой «структурной ошибкой»?
Я использую Ubuntu 20.04.
apt-cache policy libgstreamer-plugins-base1.0-0
возвращает:
libgstreamer-plugins -base1.0-0: Установить: 1.16.2-4 Кандидат: 1.16.2-4 Таблица версии: *** 1.16.2-4 500 500 http://fr.archive.ubuntu.com/ubuntu focal / main пакеты amd64 100 / var / lib / dpkg / status
,
ldd /lib/x86_64-linux-gnu/libgstaudio-1.0.so.0 | grep local
возвращает
libgstbase-1.0.so.0 => /usr/local/lib/libgstbase-1.0.so.0> (0x00007ff3272d5000) libgstreamer-1.0.so.0 => /usr/local/lib/libgstreamer-1.0.so.0> (0x00007ff326fbb000)
и
ldd /lib/x86_64-linux-gnu/libgstvideo-1.0.so. 0 | grep local
возвращает
libgstbase-1.0.so.0 => /usr/local/lib/libgstbase-1.0.so.0 (0x00007f4cc0a04000) libgstreamer-1.0.so.0 => /usr/local/lib/libgstreamer-1.0.so.0 (0x00007f4cc06ea000)
Я очень разочарован, пожалуйста, помогите мне! Хорошего дня.
Поскольку в ldd
были обнаружены библиотеки в / usr / local / lib
, это могут быть остатки самокомпилированных библиотек gstreamer. Они могут быть, а могут и не быть двоично совместимыми с системными библиотеками gstreamer, и это может быть проблемой.
Итак, пока попробуйте удалить / usr / local / lib
(или / usr / local
полностью) и попробуйте еще раз:
sudo mv /usr/local/lib /usr/local/lib.old
Теперь перестройте кеш компоновщика для хорошей меры:
sudo ldconfig
и попробуйте снова запустить эти приложения.
Кроме того, этот путь / lib / x86_64-linux-gnu / libgstaudio-1.0.so.0
мне кажется подозрительным; это должно быть /usr/lib/x86_64-linux-gnu/libgstaudio-1.0.so.0
. Пожалуйста, проверьте, возможно, это неработающая символическая ссылка:
cd /lib/x86_64-linux-gnu
file * | grep broken
Если неработающей символической ссылки нет, вывод будет пустым; в противном случае каждая указанная строка представляет собой неработающую символическую ссылку.
HTH
Спасибо за вашу помощь. Я переместил / usr / local / lib, как вы мне сказали. Теперь приложения работают! Если две проблемные библиотеки имеют некоторые зависимости от бесполезных библиотек в / usr / local / lib?
Вы также правы в своем следующем пункте о сломанных символических ссылках, я выполнил команду:
cd / lib / x86_64- linux-gnu файл * | grep broken
, который возвращает:
libroken.so.18: символическая ссылка на libroken.so.18.1.0 libroken.so.18.1.0: 64-разрядный общий объект LSB ELF, x86-64, версия 1 (SYSV), динамически связанный, BuildID [sha1] = 9eeddc1b0472826f53e5b3f7bd1b72d1fe971659, stripped
Это критическая проблема, как исправить это?