近日在虛擬機下的QT5.11.2安裝出現了一個bug,折騰好久才搞定。
環境:vmware + debain 9.5 + qt5.11.2 。 QT_DIR = /Qt5.11.2/5.11.2/gcc_64/mkspecs
找了各大網站、博客,基本都是說直接安裝openGL的,然而我的虛擬機安裝openGL總是出各種錯。未果。
這里推薦這篇博文的解決方案: https://www.cnblogs.com/chujian1120/p/5460772.html
如果能夠解決就不要繼續往下看了,但是,如果find找不到libGL的動態庫,那么就要繼續往下看了。
參考 https://www.cnblogs.com/coding-my-life/p/5677256.html
總的來說就是,我們寫的簡單項目可能大部分用不到OpenGL,但是GUI模塊是默認包含OpenGL的,我們看API就知道。
只要是GUI工程,就默認給Makefile加上-lGL的編譯選項。
報錯的根源就在於Makefile文件中多了一個-lGL的編譯選項。
我們可以自己用qmake命令,去生成Makefile文件。
所以我們要做的就是把這個-lGL給干掉。
太長不看版:直接修改{QT_DIR}/modules/qt_lib_gui_private.pri,去掉第15行的 -lGL 即可,再次生成的Makefile中不會再出現 -lGL。
首先我們得知道qmake生成的makefile為啥會有這個-lGL,
要了解這個,首先我們得了解一些qmake的原理和配置。我也只是了解個皮毛,具體還是需要去看手冊和腳本。
我的簡單理解,就是通過一系列的腳本文件來生成與對應的pro文件和Makefile文件。
默認生成的pro文件中自帶 gui 和 core 模塊。而這兩個模塊的配置文件在 {QT_DIR}/modules文件夾下。
由於我們的是qt項目,所以qmake會去{QT_DIR}/features/文件夾下去找配置文件;之后會調用qt_module_pris.prf文件,這個文件中又會逐一去調用各個模塊的pri文件;我們這里的是qt_lib_gui_private.pri。
以后如果需要寫prf 文件,pri文件,QT自帶的文件會是一個很好的參考。