应用移植 (二) QT编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JerryGou/article/details/82624760

下载Qt源码http://download.qt.io/archive/qt/

ubuntu安装QT apt-get install cmake qt5-default qtcreator

下载编译好的QT for ARM https://download.csdn.net/download/jerrygou/10662736

下载软件

下载以下软件包
1、交叉编译工具连
    sudo apt-get install g++-arm-linux-gnueabi
    sudo apt-get install gcc-arm-linux-gnueabi
2、tslib1.4.tar.gz
3、qt-everywhere-opensource-src-5.6.0-alpha.tar.gz

1、解压

tar zxvf qt-everywhere-opensource-src-5.6.0.tar

2、修改编译配置

gedit  qt-everywhere-opensource-src-5.6.0/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

#一下内容具体含义请查看官方文档,我的板子是beaglebone black,所以arch=armv7-a mtune=cortex-a8 
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS  += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv7-a -mtune=cortex-a8
QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv7-a -mtune=cortex-a8

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

#交叉编译工具链,自行修改成自己的,在命令行中输入#arm- 加tab键,打印出来的就是自己的工具链名字。
#后缀的-lts意思是加上ts库,也就是tslib库
# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabi-gcc -lts
QMAKE_CXX               = arm-linux-gnueabi-g++ -lts
QMAKE_LINK              = arm-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = arm-linux-gnueabi-g++ -lts

#同上
# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabi-objcopy
QMAKE_NM                = arm-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-linux-gnueabi-strip
load(qt_config)

#这个位置就是编译tslib时的prefix位置,自己设置
QMAKE_INCDIR=/root/code/tslib/tmp/include/
QMAKE_LIBDIR=/root/code/tslib/tmp/lib/

3、配置编译

mkdir -p ../Qt5.6
./configure  -prefix /root/code/qt/Qt5.6 \
  -opensource \
  -release \
  -confirm-license \
  -xplatform linux-arm-gnueabi-g++ \
  -shared \
  -qt-zlib \
  -no-gif \
  -qt-libjpeg \
  -no-nis \
  -no-opengl \
  -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 /root/code/tslib/tmp/include \
  -L /root/code/tslib/tmp/lib
make -j4
make install

如果使用的不是韦老大的虚拟机编译过程中可能报关于libxcb的错误,查看 qtbase/src/plugins/platforms/xcb 底下的 readme 安装相应的库就可以了。

4、将移植好的 qt 打包到开发板

  cd ..
  tar zcvf Qt5.6.tar.gz Qt5.6
  cp Qt5.6.tar.gz /root/code/rootfs/usr/local/
  tar zxvf Qt5.6.tar.gz
  rm Qt5.6.tar.gz
  rm -r doc include bin mkspecs qml translations

5、设置qt相关的环境变量

此部分可以参考qt官方问文档:http://doc.qt.io/qt-5/embedded-linux.html ,这我这仅仅是设置支持了触摸屏,你可以参考官方设置支持键盘,鼠标等等。

  在文件系统 /etc/profile 里添加

export QTEDIR=/usr/local/Qt5.6
export LD_LIBRARY_PATH=/usr/local/Qt5.6/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=800x480:mmSize=800x480:offset=0x0:tty=/dev/tty1
export QT_QPA_FB_TSLIB=1


或者:
#QT安装
#QT安装目录
export QPEDIR=/usr/local/QT4.5
export QTOPIA_DEPOT_PATH=$QPEDIR/bin
export QT_QPA_FONTDIR=$QPEDIR/lib/fonts
export QTDIR=$QPEDIR/bin
export DQTDIR=$QPEDIR/bin
export QMAKE=$QPEDIR/bin/qmake
export UIC=$QPEDIR/uic
export TMAKEDIR=$QPEDIR/bin
export TMAKEPATH=$QPEDIR/mkspecs/qws/linux-arm-g++
export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$QPEDIR/lib
export QWS_MOUSE_PROTO='TSLIB:/dev/input/event0'
export TSLIB_TSDEVICE='/dev/input/event0'

  红色部分请根据自己的开发板进行修改,我手头的开发板是 7 寸 800x480 的 LCD,TQ210V4 用上面的参数即可。

  此时,qt 已经移植完毕,你可以打包放入你的 nfs 目录启动进行测试了,至于制作 yaffs2 jffs2 等文件系统请参考:http://blog.csdn.net/lizuobin2/article/details/52589215 ,qt库比较大,烧录的时候可能比较困难,可以先将QT去除,打包成文件系统大约之后20M不到,烧录到开发板之后,启动内核,通过nfs tftp等工具,再将打包好的Qt传到板子上展开即可。

6、编译程序

在ubuntu中设置qmake的环境变量

export PATH=/usr/local/arm/QT4.5/__install/arm/bin:$PATH
qmake -v    #查看版本

编译程序:

qmake -project
qmake -makefile
make

报错:

1、错误 make: arm-linux-gnueabi-g++: Command not found
        Makefile:172: recipe for target 'tslib.o' failed
      解决:apt install g++-arm-linux-gnueabi

 2、

 
 解决办法:

主机上交叉编译内核时,make menuconfig,在General setup  ---> 【】 System V IPC处打上【*】

3、

解决:在/etc/profile文件中添加

export QT_QPA_FONTDIR=$QPEDIR/lib/fonts

然后 执行 source /etc/profile重新加载环境变量,如果解决不了,就在开发板下创建相应目录并添加相应文件

阅读更多

没有更多推荐了,返回首页