虛擬機環境: ubuntu12.04 32bit /64bithtml
目標平臺: i.MX6 開發板linux
交叉編譯工具鏈: gcc gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12git
文件系統: 飛凌嵌入式 提供的 rootfsshell
注意:編程
1 飛凌嵌入式 iMX6開發平臺 發佈資料裏面提供編譯好的 Qt 庫和開發工具 qt4.8.5-sdk.tar.bz2, tslib-sdk.tar.bz2 ,若是您進行 Qt 應用程序的開發能夠不 用編譯 Qt ,直接跳到 1.4 節,進行應用程序的開發。ubuntu
2 發佈的 Linux 文件系統中默認含有 Qt 庫,能夠直接運行 Qt 應用程序, Qt 版本: Qt4.8.5 。app
1.1.1 安裝交叉編譯器ide
拷貝 tools 目錄下的 gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz工具
到 //work/imx6 目錄下面開發工具
root@forlinx:/work/imx6/qt4.8.5# tar xvf gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz -C /usr/local/arm
注意:本操做是在 32bit ubuntu12.04 運行。若是在 64bit ubuntu12.04 下運行 32bit 可執行程序,必須執行 sudo apt-get install ia32-libs libc6-i386 , 安裝在 64bit ubuntu12.04 下 32bit 程序的運行庫。
root@forlinx:/work/imx6/qt4.8.5#/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc -v
1.1.2 設置交叉編譯器環境變量
# gedit /etc/profile
在文件的末尾添加以下環境變量 :
export PATH= root@forlinx:/work/imx6/qt4.8.5#/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin:$PATH
export TOOLCHAIN= /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain
export TB_CC_PREFIX=arm-none-linux-gnueabiexport
PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
以下圖所示 :
1.1.3 導入環境變量
# source /etc/profile
# arm-linux-gcc -v
以下圖所示則說明添加編譯器成功:
1.2 移植 tslib
tslib 是電阻式觸摸屏用於校準的一個軟件庫,是一個開源的程序,可以爲觸摸屏驅動得到的採樣提供
諸如濾波、去抖、校準等功能,一般做爲觸摸屏驅動的適配層,爲上層的應用提供了一個統一的接口。因
此這裏先編譯安裝 tslib ,這樣在後面編譯 Qt 的時候才能打包編譯進去
1.2.1 安裝 autoconf 、 automake 、 libtool 包
# sudo apt-get install autoconf #tslib 依賴
# sudo apt-get install automake #tslib 依賴
# sudo apt-get install libtool #tslib 依賴
# sudo apt-get install g++ #tslib 依賴
# sudo apt-get install libc6-dev:i386 #qt4.8.5 依賴
#sudo apt-get install build-essential #qt4.8.5 依賴
#sudo apt-get install gcc-multilib #qt4.8.5 依賴
1.2.2 拷貝壓縮文件
拷貝 src 目錄下 tslib-1.4-src.tar.bz2 的到 /work/imx6 (推薦)目錄下面
# tar -xvf tslib-1.4-src.git.tar.bz2
# cd tslib
# ./tslib.sh # 飛凌提供的編譯腳本,執行完會將 tslib 默認安裝到 /usr/local/arm/tslib
1.2.3 移植 tslib 到 i.MX6 目標板
假設用戶的根文件系統路徑爲: /work/imx6/rootfs
執行如下命令:
# cd /usr/local/arm/tslib
# cp -ar lib/* /work/imx6/rootfs /usr/lib
# cp -ar bin/*/work/imx6/rootfs/usr/bin
# vi etc/ts.conf # 去掉 module_raw input 前註釋符 #, 必定要注意中間的空格也去掉, module 頂格
# cp -ar etc/* /work/imx6/rootfs /etc
1.2.4 導出 tslib 環境變量
# cd /work/imx6/rootfs
# vi etc/rc.d/qt_env.sh
添加如下環境變量
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
< tslib 環境變量說明:
TSLIB_CONFFILE // 配置文件名
TSLIB_PLUGINDIR // 插件目錄
POINTERCAL_FILE : // 指定包含用於校準指針設備的數據的文件
TSLIB_TSDEVICE // 觸摸屏設備文件名
TSLIB_CALIBFILE // 校準的數據文件,由 ts_calibrate 校準程序生成
TSLIB_CONSOLEDEVICE // 控制檯設備文件名
TSLIB_FBDEVICE // 設備名
以上環境變量在實際開發中的實際配置能夠根據實際狀況決定。而這些指定的設備節點必定要和你的
開發板上的 /dev 目錄下的設備節點相對應。
1.2.5 在 i.MX6q 目標板下測試 tslib
用新文件系統啓動 i.MX6q 板子,進入 shell 後執行以下命令:
#source /etc/rc.d/qt_env.sh
# ts_calibrate 對電阻屏進行觸摸較驗
# ts_test 對電阻屏進行觸摸測試
1.3 移植QT 4.8.5
1.3.1 拷貝壓縮文件
拷貝 src 目錄下的 qt-everywhere-opensource-src-4.8.5.tar.gz 到 /work/imx6 目錄下面 , 請注意,
咱們對 Qt 源碼進行了必要的配置,默認配置路徑就是 /work/imx6 , 若是您的 Ubuntu 裏面沒有該路
徑請執行以下命令建立 」/work/imx6」 路徑:
#mkdir /work/imx6
執行如下命令解壓 Qt 源碼文件夾 :
# tar xvfj qt-everywhere-opensource-src-4.8.5.tar.gz
#tar xvfj linux-imx6-g++.tar.bz2
#cp –fr linux-imx6-g++ qt-everywhere-opensource-src-4.8.5/mkspecs/qws/ linux-imx6-g++
#cp qteverywhere.sh qt-everywhere-opensource-src-4.8.5/
# cd qt-everywhere-opensource-src-4.8.5
#export PATH=$PATH: /usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/
修改 qt-everywhere-opensource-src-4.8.5/ mkspecs/common/linux.conf,pthread 後面添加 -lts
#make confclean
#make clean
# ./qteverywhere.sh ## 飛凌提供的編譯腳本,執行完會將 qt 默認安裝到 /usr/local/arm/qt4.8.5
#make
#mkdir –p /usr/local/freescale/qt4.8.5
#make install
#/usr/local/freescale/qt4.8.5/bin/qmake –v # 查看是否按照成功
以下圖所示則說明添加qt庫編譯器成功
1.3.3 移植 qt4.8.5 到 i.MX6 目標板
# cd /usr/local/freescale/qt4.8.5/
# cp -ar lib/libQt* lib/fonts/ /work/imx6/rootfs/opt/forlinx_qt4.8/lib
# cp -ar demos/embeddeddialogs/embeddeddialogs /work/imx6/rootfs/opt/forlinx_qt4.8/bin
注:若 opt/forlinx_qt4.8 {lib,bin} 目錄不存在能夠本身建立,也能夠是其餘目錄
1.3.4 導出 qt 環境變量
# cd /work/imx6/rootfs
# vi etc/rc.d/qt_env.sh# 添加如下環境變量
export QTDIR=/opt/qt4.8.5
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$QTDIR/plugins
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export QWS_DISPLAY="linuxfb:mmWidth50:mmHeight130:0"
export QWS_SIZE=800x480
Qt 環境變量說明:
LD_LIBRARY_PATH :指定 qt 的共享庫具體路徑
QT_QWS_FONTDIR :指定 qt 的 font 具體路徑
QWS_SIZE :設定在屏幕尺寸
QWS_DISPLAY :指定的顯示類型和幀緩衝區
QWS_MOUSE_PROTO :指定觸摸設備
以上環境變量在實際開發中的實際配置能夠根據實際狀況決定。而這些指定的設備節點必定要和你的開發
板上的 /dev 目錄下的設備節點相對應。
開機自動啓動程序放在 /etc/rc.d/apps.sh
內容以下:
#!/bin/sh
#apps
cd /opt/qt4.8.5/demos/embedded/fluidlauncher
./fluidlauncher -qws &
#apps
手動運行程序
#source /etc/rc.d/qt_env.sh
cd /opt/qt4.8.5/demos/embedded/fluidlauncher
./fluidlauncher -qws &
1.3.5 i.MX6 目標板下測試 QT4.8.5
用新移植的文件系統啓動開發板,進入 shell 後執行以下命令:
# cd / opt/forlinx_qt4.8/bin/
# ./embeddeddialogs -qws&
注意:若是想讓界面豎屏顯示,只需添加 -display "Transformed:Rot90" 參數便可。
以下圖所示:
1.4 Qt Creator 開發環境搭建及編程
1.4.1 安裝 Qt Creator2.4.1
在 Ubuntu 圖形gui安裝
在 Ubuntu 命令行執行以下命令:
#apt-get install qtcreator
安裝完成後在終端輸入如下命令,開啓 Qt Creator
#qtcreator&
1.4.2 設置 Qt Creator 使其支持交叉編譯
點擊 Qt Creator 的 Tools 菜單下的 Options ,點擊左列 Build & Run ,而後點擊界面右側的 Tools Chains
標籤頁, 而後點擊 Add 添加 GCCE, 單擊 Compiler path Browse 添加交叉編譯器
(/usr/local/arm/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-g++) 的路徑,以下圖所示:
Qt Creator Versions 的設置
點擊 Add 添加 /usr/local/freescale/qt4.8.5/bin/qmake 文件 ( 咱們提供的 qt4.8.5-sdk.tar.bz 含有 qmake 文件,把
qt4.8.5-sdk.tar.bz 壓縮包釋放到 /usr/local/ freescale 目錄便可 ) ,添加進去,以後,點擊 Apply 即配置完成。
1.4.3 新建 hello Qt 程序進行測試
建立一個 Qt Widget Project 項目,以下圖:
輸入項目名稱和項目路徑,以下圖:
選擇 Manually 版本(就是咱們剛纔添加的那個交叉編譯器版本,必定要選對)
剩下的步驟默認就好,而後就能夠經過 Build->Build All 進行編譯,以下圖:
1.4.4 在開發板上測試 qt 應用程序
注:因爲 qt 字體庫裏已包含一箇中文字體,故直接能夠在程序中使用中文,無需額外操做