符号查找错误:概念质疑

符号查找错误:概念质疑

自从我在笔记本电脑上安装了 ubuntu 后,我就遇到了问题gstreamer,这影响了使用它的许多程序,totem、kdenlive甚至gnome-control-center,并阻止它们运行。

返回的错误信息是:

totem: symbol lookup error: /lib/x86_64-linux-gnu/libgstaudio-1.0.so.0: 
undefined symbol: gst_aggregator_simple_get_next_time

或者

kdenlive: symbol lookup error: /lib/x86_64-linux-gnu/libgstvideo-1.0.so.0: 
undefined symbol: 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:
Installé : 1.16.2-4
Candidat : 1.16.2-4
Table de version :
1.16.2-4 500
500 http://fr.archive.ubuntu.com/ubuntu focal/main amd64 Packages
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)

我非常失望,请帮帮我!祝您有美好的一天。

答案1

由于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

如果没有损坏的符号链接,则输出将为空;否则列出的每行都是损坏的符号链接。

高血压

答案2

感谢您的帮助。我已按照您的指示移动了 /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:ELF 64 位 LSB 共享对象,x86-64,版本 1(SYSV),动态链接,BuildID[sha1]=9eeddc1b0472826f53e5b3f7bd1b72d1fe971659,已剥离

这是一个严重问题吗?我该如何解决?

相关内容