2011-12-15 70 views
1

我正在編譯一個共享庫,在ld命令上有一個-lGL。但它在我的系統上找不到libGL.so。 Nvidia包正確設置庫路徑/etc/ld.so.conf.d/。 即使是ldconfig -p | grep libGL.so輸出發現:無法找到-lGL,沒有符號鏈接怎麼辦?

libGL.so.1 (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so.1 
libGL.so.1 (libc6) => /usr/lib32/nvidia-current/libGL.so.1 
libGL.so (libc6,x86-64, OS ABI: Linux 2.4.20) => /usr/lib/x86_64-linux-gnu/libGL.so 
libGL.so (libc6,x86-64) => /usr/lib/nvidia-current/libGL.so 
libGL.so (libc6, OS ABI: Linux 2.4.20) => /usr/lib32/libGL.so 
libGL.so (libc6) => /usr/lib32/nvidia-current/libGL.so 

我看了幾乎無處不在,爲了能夠與它聯繫起來,我已經基本解決方案2:

  1. 鏈接NVIDIA的libGL.so到標準/ usr/lib位置。對於任何想要編譯一個opengl庫的人來說,這似乎都是錯誤的。爲什麼鏈接器不使用ldconfig緩存?

  2. 手動將-L/usr/lib/nvidia-current附加到庫搜索路徑。再一次,錯誤的是,我怎麼知道圖書館可以在所有系統上找到的每一條路徑?

所以我的真正的問題是:什麼是對與圖書館沒有連接在一個標準的位置,但位置已經與/etc/ld.so.conf註冊標準和自動的方法嗎?

+0

爲什麼這個標記的python? – mkb 2011-12-15 14:30:05

+0

對不起,我在做python擴展。刪除標籤。 – tito 2011-12-15 14:31:15

回答

1

/etc/ld.so.conf/lib/ld.so用於在運行時解析共享庫,它與編譯時鏈接的東西無關。

是什麼做的只是鏈接到libGL.so/usr/lib/x86_64-linux-gnu/正確的方式,應用程序將使用NVIDIA上運行時的libGL.so。這應該不是問題,因爲OpenGL接口是穩定的,並且符號在兩個庫中都是相同的,它的實現是不同的。

相關問題