Linux系統下Qt4.8.2環境搭建

Linux系統下Qt4.8.2環境搭建

參考文章:https://www.linuxidc.com/Linux/2013-07/87576.htm

參考博客:https://blog.csdn.net/qq_22716879/article/details/51819184

一.安裝G++環境
 sudo apt-get install build-essential 
另外的一些相關環境。如果不安裝,一些qt的組件是無法正常編譯的,例如openGL
 sudo apt-get install libx11-devlibxau-dev libxaw7-dev libxcb1-dev libxcomposite-dev libxcursor-devlibxdamage-dev libxdmcp-dev
sudo apt-get install libxext-dev libxfixes-devlibxfont-dev libxft-dev libxi-dev libxinerama-dev libxkbfile-dev libxmu-devlibxmuu-dev
sudo apt-get install libxpm-dev libxrandr-devlibxrender-dev libxres-dev libxss-dev libxt-dev libxtst-dev libxv-dev libxvmc-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libssl-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libcups2-dev
sudo apt-get install libgl1-mesa-devlibglu1-mesa-dev

sudo apt-get install libgstreamer0.10-dev 


二.解壓代碼
tar zxvf qt-everywhere-opensource-src-4.8.2.tar.gz
解壓完進入解壓後的源代碼文件夾

 

三.執行./configure生成makefile
./configure -prefix /usr/local/Qt-4.8.2
(
上面指定的這個目錄/usr/local/Qt-4.8.2 ,就是make install 後的安裝目錄)
下面出現對話框選擇open source edition.這是自由版。輸入yes接受協議。
(1)
如果你的機器各種庫文件完整,經過一小會,配置完成,會出現以下信息
              Qt  is now configured forbuilding ,just run 'make'
              Once everything is built , youmust run 'make  install'
              Qt will be installed into/usr/local/Qt-4.8.2
              To  reconfigure ,run'make confclean' and 'configure'
說明Makefile文件生成成功
(2)
如果出現以下信息
        Basic XLib functionality test failed!
        You might need to modify the include and librarysearch paths by editing
        QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in/home/gcgily/qt-everywhere-opensource-src-4.8.4/mkspecs/linux-g++
       
還是老辦法,以不變應萬變。進config.test/x11/xlib執行make命令,看出錯信息
        g++ -Wl,-O1 -o xlib xlib.o   -L/usr/X11R6/lib -lXext -lX11 -lm
        /usr/bin/ld: cannot find -lXext
       
看到了吧,g++/usr/X11R6/lib下,找不到libXext.so呢。
       
其原因就在於需要安裝libX11的開發包,在Ubuntu/debian裏包名都是libX11-dev
       
根據以往的經驗,在./configure前主動裝好下面3個包,基本上就萬事大吉了
        sudo apt-get install libX11-dev libXext-devlibXtst-dev
安裝所需到包後再重新./configure即可生成Makefile文件

如果出現:ProjectERROR: Package gstreamer-app-0.10 not found,則執行以下命令
apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
如果出現 g++: error: unrecognizedcommand line option ‘-fuse-ld=gold’

這是Qt的一個bughttps://bugs.webkit.org/show_bug.cgi?id=89312

在裝有gold linker的系統裏,編譯腳本會加入-fuse-ld=gold選項,但這個選項gcc是不支持的。解決辦法是移除該選項,找到文件src/3rdparty/webkit/Source/common.pri,屏蔽QMAKE_LFLAGS+=-fuse-ld=gold

#  
     QMAKE_LFLAGS+=-fuse-ld=gold

 

四、編譯QT
執行make命令,需要2個小時。

 

五、安裝QT
運行sudo make install命令。需要幾分鐘時間,默認安裝到/usr/local/Qt-4.8.2. 運行/usr/local/Qt-4.5.3/bin/designer ,若能啓動QT,說明QT已經安裝好了。

 

六、設置環境變量
更改用戶環境變量

注:

1.username爲個人虛擬機用戶名

2.我的Qt實際安裝目錄爲/home/share/hitarget/qt-everywhere-opensource-src-4.8.2/bin, 沒有安裝到預期的/usr/local/Qt-4.8.2

3.下面按照我的實際安裝目錄情況進行設置

 

gedit  /home/username/.bashrc
添加:
export QTDIR=
/home/share/hitarget/qt-everywhere-opensource-src-4.8.2
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 

注:不必要更改root環境變量,可能導致虛擬機崩潰
更改包括root用戶的環境變量
sudo gedit /etc/profile  (
此處profile文件要更改一下權限才能寫入)
添加:
export QTDIR=
/home/share/hitarget/qt-everywhere-opensource-src-4.8.2
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

 

七、測試環境變量
重啓測試環境變量:
qmake -v
顯示版本信息:
QMake version 2.01a
Using Qt version 4.8.2 in /usr/local/Qt-4.8.2/lib
which qmake
顯示安裝位置信息:
/usr/local/Trolltech/Qt-4.8.2/bin/qmake
環境變量設置成功。

 

注:qmake -v的時候出現以下錯誤

qmake: could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake’:No such file or directory

原因:qtchooser默認選擇路徑中沒有指向qmake路徑

解決:

cd/usr/lib/x86_64-linux-gnu/qt-default/qtchooser

vim default.conf

將第一行中的/usr/lib/x86_64-linux-gnu/qt4/bin刪除(我僅註釋掉不行)
替代爲/home/share/hitarget/qt-everywhere-opensource-src-4.8.2/bin(我的qmake安裝路徑)


代碼:
如果需要在Qt中引用其他的包以及庫文件,則使用:
INCLUDEPATH += /usr/local/include/
INCLUDEPATH += /usr/local/include/Eigen
INCLUDEPATH += /usr/local/include/boost
INCLUDEPATH += /usr/local/include/CGAL


LIBS += -L/usr/local/lib/ -lgmp
LIBS += -L/usr/local/lib/ -lmpfr
其中LIBS參數中 -l後只能接特定某一個庫文件,且如果該文件爲 “libxxx.so“,則-l後只接"xxx"


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章