1. 程式人生 > >Ubuntu 12.04下搭建Qt開發環境

Ubuntu 12.04下搭建Qt開發環境

Qt開發環境的搭建,具體可按整個專案的開發環境來決定... 例如:本人的電腦主系統是Win7,並且公司提供專門的伺服器來編譯專案,這樣就可以將程式的編輯與編譯分開了。這次是在虛擬機器裡的Ubuntu下搭建一個開發環境,僅當練練手。好,不羅嗦了...

 /* ----------------------  ----------------------  ----------------------  ----------------------  ----------------------  ----------------------  ----------------------  ----------------------  */

搭建流程:

1.安裝Qt Creator

2.安裝交叉編譯器

3.編譯directfb (這只是為了提高板端程式的圖形渲染效能,故加入DirectFb圖形加速層)

4.修改、配置、編譯Qt庫

一。因為是在linux下做開發,因此獲取qt-creator-linux-x86-opensource-2.7.1.bin,並執行如下操作:

   sudo./qt-creator-linux-x86-opensource-2.7.1.bin

   此時如果開啟Qt Creator出錯,是因為檔案所有者的問題,在使用者主目錄下執行如下操作:

   chown -R ***:*** ~/.config/QtProject         (***為當前使用者名稱)

   此時若~/.config/下未找到QtProject目錄,稍後再執行此操作也行。

二。

   1.如果是安裝桌面版的Qt庫,直接執行如下操作即可:

     1).解壓原始碼包:tar xvzf qt-everywhere-opensource-src-4.8.4.tar.gz

     2).配置Qt庫:在原始碼目錄下執行 ./configure -fast

     3).編譯:在原始碼目錄下 make -j8 (用多個作業執行緒去完成編譯工作,可能會耗時半小時左右)

     4).安裝:sudo make install

   2.安裝嵌入式版Qt庫(因為本人寫的Qt程式是要放到嵌入式產品中執行的,而嵌入式產品的硬體資源等都是受限的,因此就會涉及庫的裁剪、

     配置,以及加入DirectFb等等)

     1).安裝海思交叉編譯器:

        a).解壓原始碼包:tar xvfz Hi3531_SDK_V1.0.7.3.tgz,解壓後生成Hi3531_SDK_V1.0.7.3_B010目錄

        b).修改HISIV-SDK/Hi3531_SDK_V1.0.7.3_B010/下的sdk.unpack指令碼,我們使用的是bash而非sh,將sdk.unpack第一行改為

           #!/bin/bash

        c).解壓sdk:./sdk.unpack

        d).板端程式使用的交叉編譯器為arm-hisiv100nptl-linux,因此

           ***/Hi3531_SDK_V1.0.7.3_B010$ cd osdrv/toolchain/arm-hisiv100nptl-linux/

           ***/osdrv/toolchain/arm-hisiv100nptl-linux$ chmod 755 cross.install

        e).安裝:./cross.install

     2).編譯directfb

        a).解壓directfb原始碼包:tar xvzf directfb-1.5.3.tar.gz,解壓後會生成directfb目錄

        b). cd directfb/

        c). ***/directfb/$ ./ci.sh後會提示:

           $ please select the process type:(1)multi(2)single:

           選擇2;

           $ please select the compile type:(1)debug(2)release:

           選擇2

           編譯完成後會在當前目錄下生成directfb目錄,該directfb目錄下的include 和 lib裡就包含了編譯Qt庫時要用到的標頭檔案和

           庫檔案;將該directfb目錄拷貝到/opt/下

           ***$ cp -R directfb /opt/ (由於Qt庫編譯時使用的絕對路徑,一旦directfb的路徑改變了,編譯Qt程式會出錯,故將

           directfb目錄放到/opt/下)

      3).修改編譯Qt庫的配置檔案:目的有二,1.指定Qt到何處引用和連線directfb標頭檔案和動態庫,2.指定編譯Qt庫時的編譯引數。

         解壓嵌入式版Qt庫原始碼包:tar xvzf qt-arm-4.8.4-dfb.tar.gz,接著cd qt-arm-4.8.4-dfb/

         修改mkspecs/qws/linux-hisi-g++/qmake.conf,操作如下:

         vim mkspecs/qws/linux-hisi-g++/qmake.conf

         新增變數

         QT_CFLAGS_DIRECTFB = -D_REENTRANT-I/opt/directfb/include/directfb

         QT_LIBS_DIRECTFB = -L/opt/directfb/lib-ldirectfb -lfusion -ldirect -lpthread

         這樣directfb庫可以被Qt庫正確連結到了。

         指定交叉編譯器使用的指令集及架構,操作如下(繼續在qmake.conf中新增)

         QMAKE_CFLAGS_RELEASE= -O2 -march=armv7-a -mcpu=cortex-a9

         QMAKE_CXXFLAGS_RELEASE= $$QMAKE_CFLAGS_RELEASE

         儲存退出。

         使用qt-arm-4.8.4-dfb/tools/下的qconfig工具裁剪Qt(這一步本人頁沒太弄明白,還請路過的大蝦指點!)

         這些工具都是以原始碼的形式提供,為了使用方便,我們一般編譯將其編譯成PC上執行的工具,編譯方法也很簡單,

           前面已經編譯過了桌面版的Qt庫,其實在執行./configure時,qconfig原始碼目錄就已經生成了Makefile

           現在只需進入該目錄執行一下make就可生成qconfig可執行檔案,./qconfig執行起來後就可以看到介面了,

           將其生成的qconfig-xxxx.h檔案(例如生成的qconfig-samsung.h)放到src/corelib/global目錄後就可以在

./configure時用-qconfig xxxx(例如:-qconfig samsung)的方式來使用

            配置Qt庫:

              ./configure-opensource-confirm-license-release -static -fast -nomake tools

           -nomake examples -nomake demos -nomakedocs -nomake translations -no-largefile

-no-exceptions -no-accessibility -no-stl -no-qt3support -no-gif-no-libtiff -no-libmng

           -no-libjpeg -no-rpath -no-nis -no-cups -no-iconv-no-pch -no-dbus -no-mmx -no-3dnow -no-sse

           -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 -no-avx -no-neon-optimized-qmake

           -no-multimedia -no-phonon -no-phonon-backend -no-audio-backend-no-openssl -no-gtkstyle

           -no-svg -no-webkit -no-javascript-jit -no-script-no-scripttools -no-declarative

           -no-declarative-debug -no-sql-sqlite-no-sql-sqlite -no-sql-sqlite2-no-system-proxies

-no-xmlpatterns-little-endian-host-little-endian-no-freetype -no-opengl -depths all

           -qt-decoration-styled -qt-gfx-directfb -no-gfx-linuxfb -no-gfx-multiscreen-qt-kbd-linuxinput

-no-glib -embeddedarm -xplatform qws/linux-hisi-g++ -qconfig samsung

           想了解上面各項的含義可以:./config --help即可檢視一般項;./configure -embedded arm --help可檢視一般項和

           嵌入式平臺特有項。

         接著編譯、安裝:

                     $ make -j8

                     $ sudo make install

三。配置Qt Creator

如果Desktop(default)前面有感嘆號,則說明上面的幾項配置存在問題。