[Qt開發指南]MX6開發板QT移植

虛擬機環境: ubuntu12.04 32bit /64bit

目標平臺: i.MX6 開發板

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

文件系統: 飛凌嵌入式 提供的 rootfs

飛凌iMX6DL.jpg

注意:

1 飛凌嵌入式 iMX6開發平臺 發佈資料裏面提供編譯好的 Qt 庫和開發工具 qt4.8.5-sdk.tar.bz2, tslib-sdk.tar.bz2 ,如果您進行 Qt 應用程序的開發可以不 用編譯 Qt ,直接跳到 1.4 節,進行應用程序的開發。

2 發佈的 Linux 文件系統中默認含有 Qt 庫,可以直接運行 Qt 應用程序, 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 運行。如果在 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

如下圖所示 :

f_f6e301850b4c4917da9290c53f1dc829&t=png&o=&s=&v=1583114926

1.1.3 導入環境變量

source /etc/profile

arm-linux-gcc -v

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

f_dcfc6df1fa8341b9033d7516eb1b7992&t=png&o=&s=&v=1583114934

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庫編譯器成功

f_1844a92304d4854f233674ee47ffc43e&t=png&o=&s=&v=1583114943

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:QTDIR/bin:PATH

export LD_LIBRARY_PATH=QTDIR/lib: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.jpg

1.4 Qt Creator 開發環境搭建及編程

1.4.1 安裝 Qt Creator2.4.1

在 Ubuntu 圖形gui安裝

2.jpg

在 Ubuntu 命令行執行如下命令:

#apt-get install qtcreator

安裝完成後在終端輸入以下命令,開啓 Qt Creator

#qtcreator&

3.jpg

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++) 的路徑,如下圖所示:

4.jpg

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 即配置完成。

5.jpg

1.4.3 新建 hello Qt 程序進行測試

創建一個 Qt Widget Project 項目,如下圖:

6.jpg

輸入項目名稱和項目路徑,如下圖:

7.jpg

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

8.jpg

剩下的步驟默認就好,然後就可以通過 Build->Build All 進行編譯,如下圖:

9.jpg

1.4.4 在開發板上測試 qt 應用程序

10.jpg

注:由於 qt 字體庫裏已包含一箇中文字體,故直接可以在程序中使用中文,無需額外操作

原文鏈接:https://www.forlinx.com/article_view_154.html

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