未定義符號所造成的錯誤: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-cachecairo packages

相關內容