近日在虛擬機下的QT5.11.2安裝出現了一個bug,折騰好久才搞定。 環境:vmware + debain 9.5 + qt5.11.2 。 QT_DIR = /Qt5.11.2/5.11.2/gcc_64/mkspecs 找了各大網站、博客,基本都是說直接安裝openGL的,然而我的虛擬機安裝o ...
近日在虛擬機下的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自帶的文件會是一個很好的參考。