接上一篇,QT在中標麒麟環境安裝完成后遇到運行報錯的問題
一、問題描述:
在中標麒麟上配置好QT的環境后,新建一個工程,不做其他的任何操作,直接運行都會報cannot find lGL的錯誤。如圖所示:
這個問題找了很久,網上有的資料都是Ubuntu上的解決方式,Ubuntu上的解決方式是運行命令sudo apt-get install libqt4-dev或者sudo apt-get install libgl1-mesa-dev或者libgl1-mesa-dev或者libglu1-mesa-dev;但這種方式完全不適合中標麒麟,最后還是研究工程編譯的源代碼,找到了問題所在:
二、問題分析:
出現上述問題主要的原因是由於QT Creator在編譯運行時查找的libGL的庫是不帶版本號的,及它查找的是libGL.so,而原本系統中在usr/lib64路徑下只有libGL.so.1、libGL.so.1.2.0、libGLU.so.1、libGLU.so.1.3.1,后綴中待了版本號,導致QT程序編譯時找不到對應的庫,所以需要復制或創建鏈接命名為libGL.so。
三、解決方式:
(1)檢測當前系統中libGL相關的包
進入終端,在最上一級上輸入命令ls /usr/lib64/libGL,按Tab鍵,此時會出現lib64下所有的libGL相關的文件,如下圖所示:
(2)解決該問題有兩種方式,一種是創建快捷指向libGL.so.1的方式,另外一種是直接復制的方式。
- 創建快捷的方式(建議以這種方式解決)
在終端中在終端中進入到usr/lib64的路徑下,輸入命令:ln libGL.so.1 libGL.so ,可參照下圖所示,此處輸入的含義就是創建一個鏈接的快捷方式名稱叫libGL.so其實指向的是libGL.so.1。
- 直接復制的方式
在終端中進入到usr/lib64的路徑下,輸入命令:cp libGL.so.1 libGL.so,可參照下圖,此方式的含義是復制一個文件libGL.so.1,復制后的文件名稱叫libGL.so。