移植QT5.6.0到Freescale IMX6UL

欢迎扫码关注微信公众号:柒零玖嵌入式,更多嵌入式软硬件相关分享!

移植QT5.6.0到Freescale IMX6UL_第1张图片        

        之前,我们设计了imx6ul板卡,硬件设计参考:https://blog.csdn.net/fengyuwuzu0519/article/details/79133851。之后在上面进行了uboot的相关分析,现在移植QT5.6.0到这块板卡上来,其他imx6ul同样适用。

一、文件准备

  • 工具链:arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz

        链接:https://pan.baidu.com/s/11H1zw21_kAutOfuQPuFBmg 密码:9000

  • qt5.6.0:qt-everywhere-opensource-src-5.6.0.tar.gz

    链接:https://pan.baidu.com/s/1hiDQEDYWCq8FQYirw9yedg 密码:gvd7

  • tslib  :tslib-1.6
        git clone https://github.com/kergoth/tslib.git(sudo apt-get install autoconf automake libtool)
  • busybox:busybox-1.22.1.tar.bz2
        链接:https://pan.baidu.com/s/1dBQCf-XwscXjd7QssIn3ww 密码:kyxo

二、安装工具链

1、mkdir  -p /opt/FriendlyARM/toolchain

2、cp arm-conrtexa9-linux-gnueabihf-4.9.3-20160512.tar.xz /opt/FriendlyARM/toolchain

3、cd /opt/FriendlyARM/toolchain

4、tar -xf arm-conrtexa9-linux-gnueabihf-4.9.3-20160512.tar.xz 

5、设置/etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/FriendlyARM/toolchain/4.9.3/bin"

6、source /etc/environment

7、arm-linux-gcc -v

移植QT5.6.0到Freescale IMX6UL_第2张图片

三、安装tslib 

1、git clone https://github.com/kergoth/tslib.git

2、./autogen.sh

3、./configure --prefix=/opt/tslib --host=arm-linux --cache-file=arm-linux.cache  CC=arm-linux-gcc CXX=arm-linux-g++

4、make

5、make  install

tslib安装在/opt/tslib目录下:

四、移植qt5.6.0

1、tar -xf qt-everywhere-opensource-src-5.6.0.tar.gz

2、cd qt-everywhere-opensource-src-5.6.0

3、vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

(可关注最上方二维码公众号“柒零玖嵌入式”,回复:QT5.6。获取最新的qmake.conf文件内容

4、./configure -v -prefix /opt/qt-5.6.0 -release \
        -opensource -no-accessibility \
        -make libs -xplatform linux-arm-gnueabi-g++ -optimized-qmake \
        -pch \
        -qt-sql-sqlite \
        -qt-zlib \
        -tslib \
        -no-opengl \
        -no-sse2 \
        -no-openssl \
        -no-nis \
        -no-cups \
        -no-glib \
        -no-pkg-config \
        -no-separate-debug-info\

        -I /opt/tslib/include -L /opt/tslib/lib

5、make -j8
6、make install

五、制作文件系统

1、解压
  tar jxvf busybox-1.22.1.tar.bz2
2、配置
  make menuconfig
  Busybox Settings -> 
  general configuration ->
    [*] don't use /usr                   
  build options->
    cross comliler prefix = arm-linux-        
  installtion options->
    busybox installation prefix = /work/rootfs 
3、编译&安装
  mkdir -p /work/my_rootfs                
  make
  make install
  cd /work/my_rootfs
  ls                 
  编译安装完毕之后,我们的文件系统就生成在 /work/my_roofs 目录下了
4、创建 /etc/inittab
  mkdir -p /work/my_rootfs/etc
  vi /work/my_rootfs/etc/inittab
  # /etc/inittab
  # 启动脚本/etc/init.d/rcS
  ::sysinit:/etc/init.d/rcS
  # 启动 shell
  ::askfirst:-/bin/sh
  # 重启关机前 卸载文件系统
  ::ctrlaltdel:/sbin/reboot
  ::shutdown:/bin/umount -a -r
5、创建 /etc/init.d/rcS
  mkdir -p /work/my_rootfs/etc/init.d
  vi /work/my_rootfs/etc/init.d/rcS
  # 这是一个脚本文件,用/bin/sh解析
  #!/bin/sh
  # 挂载文件系统
  mount -a
  # 使用内存文件系统
  mkdir /dev/pts
  mount -t devpts devpts /dev/pts
  echo /sbin/mdev > /proc/sys/kernel/hotplug
  mdev -s
  # 设置IP
  #/sbin/ifconfig eth0 192.168.1.17 #nfs不需要
  # 挂载 /etc/fstab 中的文件系统
  mount -a
  exec /etc/rc.local
6、创建rc.local
  vi /work/my_rootfs/etc/rc.local
  #!/bin/sh
  . /etc/profile //注意.后边有个空格!
7、创建/etc/fstab
  vi /work/my_rootfs/etc/fstab
  # device mount-point type options dump fsck order
  proc  /proc proc defaults 0 0
  sysfs  /sys sysfs defaults 0 0
  tmpfs /tmp tmpfs defaults 0 0
  tmpfs /dev tmpfs defaults 0 0
8、构建 /dev 目录
  mkdir -p /work/my_rootfs/dev
  cd /work/my_rootfs/dev
  sudo mknod console c 5 1
  sudo mknod null   c 1 3
9、创建其它目录
  mkdir proc mnt tmp sys root usr lib
10、拷贝Lib

cp /opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/lib/*so* /work/my_rootfs/lib -d

11、拷贝QT5.6和TSLIB到文件系统目录

cp /opt/qt-5.6.0  /work/my_roofs/usr/local -r
cp /opt/tslib  /work/my_roofs/usr/local -r

12、设置环境变量

vi profile 加入:

#!/bin/sh

export T_ROOT=/usr/local/tslib
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal

export QTEDIR=/usr/local/qtmy
export LD_LIBRARY_PATH=/usr/local/qtmy/lib:$LD_LIBRARY_PATH
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FONTDIR=$QTEDIR/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmSize=480x272:offset=0x0:tty=/dev/tty1
export QT_QPA_FB_TSLIB=1

13、发布网络文件系统

vi /etc/hosts加入:192.168.1.17  /work/my_rootfs

vi /etc/exports加入:/work/my_rootfs  *(rw,sync,no_root_squash)

六、启动测试

1、设置uboot参数从网络文件系统启动

2、启动内核

3、测试tslib,并校准屏幕

4、测试QT历程

    简单的例子:链接:https://pan.baidu.com/s/15PVtuk4NxJ0wOym_NFGF0A 密码:g0wn

5、测试结果:

移植QT5.6.0到Freescale IMX6UL_第3张图片

6、最终文件系统下载,包含QT和TSLIB

(可关注最上方个人公众号“柒零玖嵌入式”交流学习,回复:imx6ul文件系统。获取最新的文件系统内容)

七、交流学习

疑问和交流学习,请扫描关注个人微信公众号“柒零玖嵌入式”仅交流学习之用。

移植QT5.6.0到Freescale IMX6UL_第4张图片



你可能感兴趣的:(imx6ul)