由未定义符号引起的错误:glXGetProcAddress

由未定义符号引起的错误:glXGetProcAddress

在我上次对我的测试 debian 系统进行 dist-upgrade 后,X 拒绝启动。我可以看到以下错误(在 gnome-session 启动时显示):

符号查找错误:/usr/lib/i386-linux-gnu/libcairo.so.2:未定义符号:glXGetProcAddress

此外,即使是 texlive 也拒绝升级,并出现同样的错误(由 luatex 引起)。

我不知道如何解决这个问题:是否有可能缺少一个重要的库?如果不是,还有什么可能导致这个问题?

答案1

@彼得夫的回答非常接近问题。

显卡是 Matrox G550 (mga),但过去安装的是 nvidia,一些 glx 的东西仍然保留在/usr/lib/tls.

我没有使用 mga 驱动程序的经验,但我的理解是没有专有的 glx 实现,所以我们继续尝试让台面工作。

安装后libgl1-mesa-glxglx-alternative-mesa我们检查libcairoldd,然后使用dpkg -S完整路径来了解从哪些包中选择libGLlibGLcore解析了ldd,只是为了检查那是台面,这两个库都不在任何包中。

将这些库移开,这次ldd显示使用了正确的台面库,此时我要求 @zar 再次检查,他的答案是这次apt-get -f install正确完成并gdm3运行没有错误。

即使是一个错误,我认为我们也无法满足任何错误请求,因为非 debianized nvidia 驱动程序破坏了合同

专有驱动程序安装仍然邪恶的,我不明白为什么他们喜欢自己的垃圾,supposed-to-install-everywhere.run而不是至少与主要发行版寻求一些合作(这可能是免费/免费的)。

答案2

该错误意味着您的 Cairo 安装缺少运行时链接依赖项 - 从符号名称判断,它是丢失/损坏的 OpenGL 实现包(可能是 Mesa)。重新安装 Cairo 可能会有所帮助,前提是包管理器修复了包依赖关系(这可能是导致错误的原因),并安装了所有缺少的先决条件。

您还可以运行ldd /usr/lib/i386-linux-gnu/libcairo.so.2并检查包含=> not found- 的行,这将告诉您系统上缺少哪个库,搜索包含它的包并(重新)安装它。

这也是更新依赖包而不更新其依赖项的情况的典型综合症(例如,使用专有驱动程序很容易发生这种情况 - 事实证明这里就是这种情况)。

答案3

在 RH 命名法中:(我也不知道 Debian 打包格式)

我尝试了一下,发现了以下内容:

  1. # sudo **'yum whatprovides /usr/lib/libGL.so.1'**产量:

    *mesa-libGL-9.2.5-1.20131220.fc20.i686 : Mesa libGL runtime libraries and DRI drivers*
    

    A、ldd印刷品共享对象库依赖项,所以它不是完成这项工作的工具,除非链接出现问题。我什么也没找到。

我看了真的很难并发现这个问题

  2. 剩下的就很简单了:

    # nm -D /usr/lib/libGL.so.1 |grep 'glXGetProcAddress'
    00014310 T glXGetProcAddress
    00014310 T glXGetProcAddressARB

   3.我得到了Adobe阅读器追赶这个。

答案4

Gnome是根据库编写的,GTK+ library它取决于cairo 库,cairo library您升级时发生的,请re-install它,而不是从本地,请重新下载它。使用apt-cache并搜索每个cairo packages

相关内容