Linux Qt cannot find -lGL錯誤完美解決方案(親測有效)


http://c.biancheng.net/view/3901.html

 

對於很多 Linux 發行版本,Qt 安裝完成后如果直接編譯或者運行項目,會出現“cannot find -lGL”錯誤,如下圖所示:

cannot find -lGL


這是因為 Qt 找不到 OpenGL 的動態鏈接庫(libGL.so)。在《Linux Qt安裝》一節中我們說過,OpenGL 在大部分 Linux 發行版中都是默認安裝的,包括 Ubuntu、CentOS 等,找不到該鏈接庫一般都是路徑不對。

Qt 默認在 /usr/lib/ 目錄下查找動態鏈接庫,但是很多 Linux 發行版將 OpenGL 鏈接庫放在其它目錄,例如我使用的是 CentOS 7,OpenGL 鏈接庫位於 /usr/lib64/ 目錄,而對於 Ubuntu,OpenGL 鏈接庫位於 /usr/lib/i386-linux-gnu/mesa/ 目錄。只要我們把 libGL.so 拷貝到 /usr/lib/ 目錄,或者在 /usr/lib/ 目錄下為 libGL.so 創建一個鏈接,就能解決問題。顯然第二種辦法更好。

另外,Linux 發行版自帶的 OpenGL 鏈接庫在后綴中添加了版本號,例如 libGL.so.1、libGL.so.1.2.0、libGL.so.1.3.1 等,但是 Qt 在鏈接階段查找的 OpenGL 鏈接庫是不帶版本號的。

總起來說,我們需要在 /usr/lib/ 目錄下為 OpenGL 鏈接庫創建一個鏈接,並去掉版本號。

如果你不知道當前 Linux 系統中 libGL.so 的具體路徑,可以使用locate libGL命令或find /usr -name libGL*命令查找,然后使用ln -s創建鏈接。請看下面的演示:

#查找 libGL 所在位置
[root@localhost ~]# locate libGL
/usr/lib64/libGL.so
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so.1.2.0
/usr/share/doc/mesa-libGL-9.2.5
/usr/share/doc/mesa-libGL-9.2.5/COPYING

#創建鏈接
[root@localhost ~]# ln -s /usr/lib64/libGL.so.1 /usr/lib/libGL.so

Linux 系統中可能存在多個版本的 libGL.so,為任意一個版本創建鏈接即可。普通用戶沒有權限創建鏈接,所以我使用了 root 用戶。

完成以上操作,再次啟動 Qt,然后編譯或者運行,就不會出現“cannot find -lGL”錯誤了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM