[Qt開(kāi)發(fā)指南]飛凌嵌入式iMX6開(kāi)發(fā)板QT移植

原創(chuàng) 2015-12-19 09:00:00 Qt開(kāi)發(fā) i.MX6開(kāi)發(fā)板 QT移植


虛擬機(jī)環(huán)境:ubuntu12.04 32bit /64bit

目標(biāo)平臺(tái):i.MX6 開(kāi)發(fā)板

交叉編譯工具鏈:gcc gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12

文件系統(tǒng): 飛凌嵌入式提供的rootfs

飛凌iMX6DL.jpg

注意:

1 飛凌嵌入式iMX6開(kāi)發(fā)平臺(tái) 發(fā)布資料里面提供編譯好的 Qt  庫(kù)和開(kāi)發(fā)工具  qt4.8.5-sdk.tar.bz2, tslib-sdk.tar.bz2 ,如果您進(jìn)行 Qt  應(yīng)用程序的開(kāi)發(fā)可以不 用編譯 Qt ,直接跳到 1.4  節(jié),進(jìn)行應(yīng)用程序的開(kāi)發(fā)。

發(fā)布的 Linux  文件系統(tǒng)中默認(rèn)含有 Qt  庫(kù),可以直接運(yùn)行 Qt  應(yīng)用程序, Qt  版本: Qt4.8.5 。

 

1.1.1 安裝交叉編譯器

拷貝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運(yùn)行。如果在64bit ubuntu12.04下運(yùn)行32bit可執(zhí)行程序,必須執(zhí)行 sudo apt-get install ia32-libs libc6-i386 ,安裝在64bit ubuntu12.04 32bit程序的運(yùn)行庫(kù)。

 

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 設(shè)置交叉編譯器環(huán)境變量

# gedit /etc/profile

在文件的末尾添加如下環(huán)境變量:

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 導(dǎo)入環(huán)境變量

# source /etc/profile

# arm-linux-gcc -v

如下圖所示則說(shuō)明添加編譯器成功:

 

1.2 移植 tslib

tslib 是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫(kù),是一個(gè)開(kāi)源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供

諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。因

此這里先編譯安裝tslib,這樣在后面編譯Qt 的時(shí)候才能打包編譯進(jìn)去

1.2.1 安裝autoconf、automakelibtool

# 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 #飛凌提供的編譯腳本,執(zhí)行完會(huì)將tslib 默認(rèn)安裝到/usr/local/arm/tslib

1.2.3 移植tslibi.MX6目標(biāo)板

假設(shè)用戶的根文件系統(tǒng)路徑為: /work/imx6/rootfs

執(zhí)行以下命令

# 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 導(dǎo)出tslib環(huán)境變量

# cd /work/imx6/rootfs

# vi etc/rc.d/qt_env.sh

添加以下環(huán)境變量

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 環(huán)境變量說(shuō)明:

TSLIB_CONFFILE //配置文件名

TSLIB_PLUGINDIR //插件目錄

POINTERCAL_FILE: //指定包含用于校準(zhǔn)指針設(shè)備的數(shù)據(jù)的文件

TSLIB_TSDEVICE //觸摸屏設(shè)備文件名

TSLIB_CALIBFILE //校準(zhǔn)的數(shù)據(jù)文件,由ts_calibrate 校準(zhǔn)程序生成

TSLIB_CONSOLEDEVICE //控制臺(tái)設(shè)備文件名

TSLIB_FBDEVICE //設(shè)備名

以上環(huán)境變量在實(shí)際開(kāi)發(fā)中的實(shí)際配置可以根據(jù)實(shí)際情況決定。而這些指定的設(shè)備節(jié)點(diǎn)一定要和你的

開(kāi)發(fā)板上的/dev 目錄下的設(shè)備節(jié)點(diǎn)相對(duì)應(yīng)。

1.2.5 i.MX6q目標(biāo)板下測(cè)試tslib

用新文件系統(tǒng)啟動(dòng)i.MX6q 板子,進(jìn)入shell 后執(zhí)行如下命令:

#source /etc/rc.d/qt_env.sh

# ts_calibrate 對(duì)電阻屏進(jìn)行觸摸較驗(yàn)

# ts_test 對(duì)電阻屏進(jìn)行觸摸測(cè)試

 

1.3 移植QT 4.8.5

1.3.1 拷貝壓縮文件

拷貝src 目錄下的qt-everywhere-opensource-src-4.8.5.tar.gz /work/imx6 目錄下面 ,請(qǐng)注意,

我們對(duì)Qt 源碼進(jìn)行了必要的配置,默認(rèn)配置路徑就是  /work/imx6 ,如果您的Ubuntu 里面沒(méi)有該路

徑請(qǐng)執(zhí)行如下命令創(chuàng)建 ”/work/imx6” 路徑:

#mkdir /work/imx6

執(zhí)行以下命令解壓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 ##飛凌提供的編譯腳本,執(zhí)行完會(huì)將qt 默認(rèn)安裝到/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 #查看是否按照成功

如下圖所示則說(shuō)明添加qt庫(kù)編譯器成功

1.3.3 移植qt4.8.5 i.MX6 目標(biāo)板

# 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}目錄不存在可以自己創(chuàng)建,也可以是其他目錄

1.3.4 導(dǎo)出qt環(huán)境變量

# cd /work/imx6/rootfs

# vi etc/rc.d/qt_env.sh#添加以下環(huán)境變量

 

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 環(huán)境變量說(shuō)明:

LD_LIBRARY_PATH:指定qt 的共享庫(kù)具體路徑

QT_QWS_FONTDIR:指定qt font 具體路徑

QWS_SIZE:設(shè)定在屏幕尺寸

QWS_DISPLAY:指定的顯示類型和幀緩沖區(qū)

QWS_MOUSE_PROTO:指定觸摸設(shè)備

以上環(huán)境變量在實(shí)際開(kāi)發(fā)中的實(shí)際配置可以根據(jù)實(shí)際情況決定。而這些指定的設(shè)備節(jié)點(diǎn)一定要和你的開(kāi)發(fā)

板上的/dev 目錄下的設(shè)備節(jié)點(diǎn)相對(duì)應(yīng)。

開(kāi)機(jī)自動(dòng)啟動(dòng)程序放在/etc/rc.d/apps.sh

內(nèi)容如下:

#!/bin/sh

#apps

cd /opt/qt4.8.5/demos/embedded/fluidlauncher

./fluidlauncher -qws &

#apps

手動(dòng)運(yùn)行程序

#source /etc/rc.d/qt_env.sh

cd /opt/qt4.8.5/demos/embedded/fluidlauncher

./fluidlauncher -qws &

 

1.3.5 i.MX6 目標(biāo)板下測(cè)試QT4.8.5

用新移植的文件系統(tǒng)啟動(dòng)開(kāi)發(fā)板,進(jìn)入shell 后執(zhí)行如下命令:

# cd /opt/forlinx_qt4.8/bin/

# ./embeddeddialogs -qws&

注意:如果想讓界面豎屏顯示,只需添加 -display "Transformed:Rot90"參數(shù)即可。

如下圖所示:

1.jpg 

 

1.4 Qt Creator開(kāi)發(fā)環(huán)境搭建及編程

1.4.1 安裝Qt Creator2.4.1

Ubuntu圖形gui安裝

2.jpg

Ubuntu 命令行執(zhí)行如下命令:

#apt-get install qtcreator

安裝完成后在終端輸入以下命令,開(kāi)啟Qt Creator

#qtcreator&

3.jpg

1.4.2 設(shè)置Qt Creator 使其支持交叉編譯

點(diǎn)擊Qt Creator Tools 菜單下的Options,點(diǎn)擊左列 Build & Run,然后點(diǎn)擊界面右側(cè)的Tools Chains

標(biāo)簽頁(yè), 然后點(diǎn)擊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++)的路徑,如下圖所示:

4.jpg

 

 

Qt Creator Versions 的設(shè)置

點(diǎn)擊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 目錄即可),添加進(jìn)去,之后,點(diǎn)擊Apply 即配置完成。

5.jpg

1.4.3 新建hello Qt程序進(jìn)行測(cè)試

創(chuàng)建一個(gè)Qt Widget Project 項(xiàng)目,如下圖:

6.jpg

輸入項(xiàng)目名稱和項(xiàng)目路徑,如下圖:

7.jpg

選擇Manually 版本(就是我們剛才添加的那個(gè)交叉編譯器版本,一定要選對(duì))

8.jpg

剩下的步驟默認(rèn)就好,然后就可以通過(guò)Build->Build All 進(jìn)行編譯,如下圖:

9.jpg

1.4.4 在開(kāi)發(fā)板上測(cè)試qt 應(yīng)用程序

10.jpg

注:由于 qt 字體庫(kù)里已包含一個(gè)中文字體,故直接可以在程序中使用中文,無(wú)需額外操作





相關(guān)產(chǎn)品 >

  • OKMX6UL-C開(kāi)發(fā)板

    飛凌嵌入式專注imx6系列imx6ul開(kāi)發(fā)板、飛思卡爾imx6ul核心板等ARM嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn),i.mx6UL系列產(chǎn)品現(xiàn)已暢銷全國(guó),作為恩智浦imx6ul,imx6ul開(kāi)發(fā)板,i.mx6提供者,飛凌嵌入式提供基于iMX6 iMX6UL解決方案定制。

    了解詳情
    OKMX6UL-C開(kāi)發(fā)板
  • OKMX6ULL-C開(kāi)發(fā)板

    40*29mm,雙網(wǎng)雙CAN,8路串口| i.MX6ULL開(kāi)發(fā)板是基于NXP i.MX6ULL設(shè)計(jì)開(kāi)發(fā)的的一款Linux開(kāi)發(fā)板 ,主頻800MHz,體積小,其核心板僅40*29mm,采用板對(duì)板連接器,適應(yīng)場(chǎng)景豐富。 了解詳情
    OKMX6ULL-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批