歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下Qt編譯出現“cannot find -lGL”及無法安裝libgl1-mesa-dev解決

Linux下Qt編譯出現“cannot find -lGL”及無法安裝libgl1-mesa-dev解決

日期:2017/2/28 13:52:32   编辑:Linux教程

在Linux系統下安裝好Qt5,打開Qt Creator新建一個最簡單的工程,編譯卻出現"cannot find -lGL"錯誤。

在網上搜索解決方法,找到的方案基本上是安裝libgl1-mesa-dev,如通過apt-get install libgl1-mesa-dev安裝,但是在我自己的系統上嘗試這條命令,無論怎麼安裝都會出現一大堆依賴錯誤,按照缺少的依賴一個個嘗試安裝,結果只會 出現越來越多的依賴錯誤。在Ubuntu軟件中心下載libgl1-mesa-dev的deb包也是無法安裝的,同樣是一大堆依賴錯誤。

如果使用aptitude命令嘗試安裝libgl1-mesa-dev,則aptitude給出的解決依賴錯誤的方案竟然是將ubuntu-desktop和xorg等軟件刪除!這樣在libgl1-mesa-dev以後,你的Linux系統將會無法再開機!我因為安裝libgl1- mesa-dev使我的Linux系統崩潰了數次。

後來找到的另外一個方法是,搜索系統中已經存在的libgl1-mesa-dev相關文件。libgl1-mesa-dev是有關OpenGL的庫。

使用locate libGL命令或find /usr -name libGL*命令搜索。

搜索結果中發現/usr/lib/i386-linux-gnu/mesa/libGL.so.1文件(這個文件也可能在另一個目錄中)。

然後使用ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so命令給已存在的庫文件創建一個鏈接到/usr/lib目錄。

然後在Qt Creator中再次編譯工程,錯誤消失。

但是如果在代碼中加入其他Qt模塊,如include <QtGui> <QtWidgets>等,將會出現新問題:找不到GL/gl.h文件。

通過追蹤錯誤來源,發現在QtGui模塊的頭文件中有包含GL/gl.h的部分,此時在include <QtGui> <QtWidgets>等命令前加上#define QT_NO_OPENGL,則可解決問題。

最後分析,一開始Qt找不到的庫文件是OpenGL的庫,而Qt默認包含了OpenGL庫,因此在沒有安裝OpenGL庫時編譯Qt程序,則會出現 錯誤。而無法安裝libgl1-mesa-dev,有可能與系統中已經存在的OpenGL相關文件沖突有關。此問題出現在虛擬機Ubuntu中,在真機上 的Linux系統暫時沒有遇到。個人猜測有可能與Vmware tools有關,因為我遇到的另一個gtk的lib依賴錯誤也似乎與它有關,Vmware tools程序中包含一些與顯示有關的驅動,不知道這是不是造成沖突的原因。如果需要同時開發Qt和OpenGL的,又遇到了這個問題的話,建議重新安裝 一次Linux系統,並在安裝Vmware tools之前謹慎考慮,再嘗試安裝Qt和libgl1-mesa-dev。

Qt入門學習——Qt 5 幫助文檔的使用 http://www.linuxidc.com/Linux/2015-09/123102.htm

Ubuntu 環境下Gtk與QT編譯環境安裝與配置 http://www.linuxidc.com/Linux/2013-08/88539.htm

Linux系統下QT環境搭建 http://www.linuxidc.com/Linux/2013-07/87576.htm

Ubuntu下QT控制台程序無法運行的解決方案以及XTerm的配置方法 http://www.linuxidc.com/Linux/2013-06/86244.htm

Ubuntu 10.04下QT4.7.4移植詳解 http://www.linuxidc.com/Linux/2013-01/77930.htm

Ubuntu 14.04下安裝部署Qt5開發環境 http://www.linuxidc.com/Linux/2014-05/101774.htm

Qt 的詳細介紹:請點這裡
Qt 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved