[Qt开发指南]飞凌嵌入式iMX6开发板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  节,进行应用程序的开发。

发布的 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

如下图所示 :

 

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.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  字体库里已包含一个中文字体,故直接可以在程序中使用中文,无需额外操作