欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

应用移植 (二) QT编程

程序员文章站 2022-03-10 21:45:02
...

下载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、

 应用移植 (二) QT编程
 解决办法:

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

3、

应用移植 (二) QT编程

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

export QT_QPA_FONTDIR=$QPEDIR/lib/fonts

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

相关标签: QT