1. 程式人生 > >解決Ubuntu 因升級18.04而更新顯示卡驅動後allegro啟動呼叫圖形庫失敗的問題

解決Ubuntu 因升級18.04而更新顯示卡驅動後allegro啟動呼叫圖形庫失敗的問題

    最近因為ubuntu系統升級到18.04,顯示卡驅動自動從之前的nvidia-375更新到了nvidia-390,結果發現開啟allegro時呼叫OpenGL庫函數出錯了........,如下:

[email protected]:/usr/lib32# Allegro

PCB Design GXL (legacy) 16.6 S036 Linux I32
(c) Copyright 1986-2012 Cadence Design Systems, Inc.
                All Rights Reserved.
Unable to resolve function glXQueryExtension
Unable to resolve function glXMakeCurrent
Unable to resolve function glXQueryExtension
Unable to resolve function glXMakeCurrent
Unable to resolve function glXQueryExtension
Unable to resolve function glXMakeCurrent
 

很顯然就是呼叫新顯示卡驅動的庫函式失敗,根據經驗知道需要替換預設的allegro呼叫GL庫函式路徑,如:

ln -s /usr/lib/nvidia-375/libGL.so.1 /usr/lib/libGL.so.1

ln -s /usr/lib/nvidia-375/libGL.so /usr/lib/libGL.so

這是以前nvidia-375驅動時候的做法,然而這次........並沒有什麼卵用。

因為:新的nvidia驅動庫已經不再安裝在老位置/usr/lib/nvidia-xxx了。那麼怎麼辦呢?

新的解決辦法:

1) 輸入命令:ldconfig -p 列出所有當前庫的配置路徑,往下拉,找到這個地方:

    libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
    libGL.so.1 (libc6) => /usr/lib/i386-linux-gnu/libGL.so.1
    libGL.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so

這才是更新驅動後,新庫對應的路徑設定。
2) 那麼,我們需要將allegro的預設呼叫路徑更改成上面的路徑:

rm /usr/lib/libGL.so (若檔案存在時使用)

ln -s /usr/lib/x86_64-linux-gnu/libGL.so /usr/lib/libGL.so

rm /usr/lib/libGL.so.1 (若檔案存在時使用)

ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so.1

3)再次啟動allegro

[email protected]:/usr/lib32# Allegro &

PCB Design GXL (legacy) 16.6 S036 Linux I32
(c) Copyright 1986-2012 Cadence Design Systems, Inc.
                All Rights Reserved.

[email protected]:/usr/lib32#

Nice! 漂亮的PCB畫面又出來了