• jz2440移植QT5.6【学习笔记】【原创】


    平台:jz2440

    作者:庄泽彬(欢迎转载,请注明作者)

    交叉编译工具:arm-linux-gcc (GCC)4.4.3

    linux:linu3.4.2

    PC环境:ubuntu18.04

    一、修改/opt/FriendlyARM/toolschain/4.4.3arm-none-linux-gnueabi/sys-root/usr/include/linux/input.h,将EV_VERSION改为0x010001

     

    二、制作文件系统

    2.1解压busybox

    1 tar -xvf busybox-1.20.0.tar.bz2

    2.2设置交叉工具链

    1 make menuconfig

    编译:

    1 make 

    创建安装的目录:

    1 mkdir -pv /work/nfs_root/qt/fs_mini_install

    安装:

    1 make install CONFIG_PREFIX=/work/nfs_root/qt/fs_mini_install

    查看是否安装成功:

    1 zhuang@zhuang:/work/nfs_root/qt/fs_mini_install$ tree -L 1
    2 .
    3 ├── bin
    4 ├── linuxrc -> bin/busybox
    5 ├── sbin
    6 └── usr
    7 
    8 3 directories, 1 file

    从交叉工具链安装glibc:

    1 mkdir lib usr/lib
    2 cp /opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib/*.so* lib/ -d
    3 cp /opt/FriendlyARM/toolschain/4.4.3/lib/*.so* lib/ -d

    创建etc目录:

    1 mkdir etc

    在etc目录下创建inittab文件:

    1 vim inittab     //内容从第2行开始
    2 # /etc/inittab
    3 ::sysinit:/etc/init.d/rcS
    4 console::askfirst:-/bin/sh
    5 tty1::askfirst:-/bin/sh
    6 ::ctrlaltdel:/sbin/reboot
    7 ::shutdown:/bin/umount -a -r

    在etc目录下穿件init.d/rcS文件:

     1 mkdir init.d
     2 vim init.d/rcS
     3 chmod a+x init.d/rcS  //内容如下
     4 #!/bin/sh
     5   
     6 mount -a
     7 mkdir /dev/pts
     8 mount -t devpts devpts /dev/pts
     9 echo /sbin/mdev > /proc/sys/kernel/hotplug
    10 mdev -s

    在etc目录下创建fstab文件:内容如下:

    1 # device     mount-point    type   options        dump  fsck order
    2 proc           /proc        proc   defaults        0     0
    3 tmpfs          /tmp         tmpfs  defaults        0     0
    4 sysfs          /sys         sysfs  defaults        0     0
    5 tmpfs          /dev         tmpfs  defaults        0     0

    创建dev目录:

    1 mkdir dev
    2 sudo mknod console c 5 1
    3 sudo mknod null c 1 3

    创建其他目录:

    1 mkdir proc tmp mnt sys root

    将fs_mini_install目录制作成文件系统镜像命令:

    1 mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_install -o fs_mini_install.jffs2

     三、tslib的移植

    1 tar xzf tslib-1.4.tar.gz
    2 cd tslib
    3 ./autogen.sh 
    4 
    5 mkdir tmp
    6 echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
    7 ./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp
    8 make
    9 make install

    安装:

    1 cd tmp
    2 cp * /work/nfs_root/qt/fs_mini_install/usr/local/tslib/ -rf

    修改tslib:

    1 修改 /etc/ts.conf第1行(去掉#号和第一个空格):
    2 # module_raw input
    3 改为:
    4 module_raw input

    测试:

    设置环境变量

     1 vim etc/profile    //内容从第2行开始
     2 #!/bin/sh
     3   
     4 export T_ROOT=/usr/local/tslib
     5 
     6 export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
     7 
     8 export TSLIB_CONSOLEDEVICE=none
     9 
    10 export TSLIB_FBDEVICE=/dev/fb0
    11 
    12 export TSLIB_TSDEVICE=/dev/event0
    13 
    14 export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
    15 
    16 export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
    17 
    18 export POINTERCAL_FILE=/etc/pointercal
    19 
    20 export TSLIB_CALIBFILE=/etc/pointercal

    运行校准测试例子:

    1 cd /usr/local/tslib/bin
    2 ./ts_calibrate

    五、移植QT 

    下载链接qt5.6:https://download.qt.io/archive/qt/5.6/5.6.0/single/

    解压:

    1 tar -xvf qt-everywhere-opensource-src-5.6.0.tar.gz

    修改配置文件:

     1 vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
     2 修改或添加如下内容:
     3 # modifications to g++.conf
     4 QMAKE_CC                = arm-none-linux-gnueabi-gcc -lts
     5 QMAKE_CXX               = arm-none-linux-gnueabi-g++ -lts
     6 QMAKE_LINK              = arm-none-linux-gnueabi-g++ -lts
     7 QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++ -lts
     8 
     9 # modifications to linux.conf
    10 QMAKE_AR                = arm-none-linux-gnueabi-ar cqs
    11 QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy
    12 QMAKE_NM                = arm-none-linux-gnueabi-nm -P
    13 QMAKE_STRIP             = arm-none-linux-gnueabi-strip
    14 load(qt_config)
    15 
    16 QT_QPA_DEFAULT_PLATFORM = linuxfb
    17 QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
    18 QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t

    配置命令:

    1 ./configure  -prefix /usr/local/Qt5.6   -opensource   -release   -confirm-license   -xplatform linux-arm-gnueabi-g++   -shared   -qt-zlib   -no-gif   -qt-libjpeg   -no-nis   -no-opengl  -no-iconv -no-cups   -no-glib   -no-dbus   -no-rpath   -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2   -no-avx    -no-openssl   -nomake tools   -qreal float   -qt-libpng   -tslib   -nomake examples   -I /usr/local/tslib/include   -L /usr/local/tslib/lib

    编译和安装:

    1 make -j4
    2 make install

    修改下面这个文件为截图的内容

    1  vim /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

    将生成的/usr/local/Qt5.6 移植到开发板的文件系统

    1 cp /usr/local/Qt5.6/ /work/nfs_root/qt/fs_mini_install/usr/local/ -raf

    开发板/etc/profile添加如下内容:

     1 export QTEDIR=/usr/local/Qt5.6
     2 export LD_LIBRARY_PATH=/usr/local/Qt5.6/lib:$LD_LIBRARY_PATH
     3 export QT_QPA_GENERIC_PLUGINS=tslib
     4 export QT_QPA_FONTDIR=$QTEDIR/lib/fonts 
     5 export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins 
     6 export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmSize=480x272:offset=0x0:tty=/dev/tty1
     7 export QT_QPA_FB_TSLIB=1
     8 
     9 export T_ROOT=/usr/local/tslib
    10 
    11 export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH

    六、安装QTCreator开发工具

    下载链接:http://download.qt.io/archive/qt/5.10/5.10.0/

    安装:

    1  sudo chmod a+x qt-opensource-linux-x64-5.10.0.run
    2 ./qt-opensource-linux-x64-5.10.0.run

    安装的方法非常简单记得在一路next选择默认的即可,记得在选择组件的时候两个都勾上,把工具全部都安装上去把。

     设置QT的工程可以在arm开发上运行,自己新建一个工具,之后根据截图的箭头设置:

     交叉工具链的位置根据自己的目录进行调整

    之后编译自己的项目,把程序推送到板子:

     

  • 相关阅读:
    int a=5,则 ++(a++)的值是?
    C中文件操作说明
    最大子序列和 o(n)
    括号匹配
    DOM、SAX、JDOM、DOM4J四种XML解析方法PK
    java中的trim()
    SAX解析XML
    ConcurrentHashMap完全解析(jdk6/7,8)
    为什么推荐Zookeeper作注册中心
    分布式锁的三种实现方式
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9815291.html
Copyright © 2020-2023  润新知