QT5.8交叉编译安装到树莓派

一.工具准备

1.下载QT5.8源码qt-everywhere-opensource-src-5.8.0.tar.xz
链接:https://pan.baidu.com/s/1cWYgPspnE5xXNMhnSYkVKQ
提取码:b7ls

2.下载交叉编译工具arm.tar.gz
arm.tar.gz

3.下载tslib1.4
链接:https://pan.baidu.com/s/1_dAv1-7a_ZnU5BQmjP6OVw
提取码:j1hi
二 .工具的交叉编译
arm交叉编译的安装
将"arm.tar.gz"解压到ubuntu的系统的文件夹“usr/local/arm”中。
然后修改环境变量,切换到home目录,然后输入命令“vim .bashrc”,打开设置环境变量的文件“.bashrc”,将环境变量修改为“export PATH=$PATH:/usr/local/arm/bin”
保存退出,然后更新一下环境变量,输入命令“source .bashrc”。

source .bashrc

接着测试一下,编译器路径设置的对不对。如下图,在Ubuntu 命令行中输入命令”arm”,
然后按键盘”Tab”,出现编译器“arm-linux-gnueabihf-gcc-xx”,这就说明编译 器路径设置正确。
在这里插入图片描述
交叉编译tslib1.4

对触摸屏信号的获取、校正、滤波处理,均采用开源的tslib。
1.将下载好的tslib1.4执行解压缩命令

tar -vxf tslib.tar.gz

切换到tslib目录:

cd tslib

安装交叉编译tslib必须的一些工具(可以先查看是否已安装,ubuntu14.04自带这些工具,可跳过)

sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

2.利用脚本写编译过程
在tslib文件夹下新建文件configTslib14.sh
vim configTslib14.sh
内容如下:

#!/bin/sh
make clean && make distclean
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
CC=/usr/local/arm/bin/arm-linux-gnueabihf-gcc ./configure --host=arm-linux --prefix=/usr/local/tslib--cache-file=arm-linux.cache
make && make install

然后运行configTslib14.sh

./configTslib14.sh

执行结束后,我们查看一下是否安装成功,执行命令:

ls /usr/local/tslib

如果出现bin,etc,include,lib,share这4个目录,如下图所示,说明交叉编译并安装tslib成功。
在这里插入图片描述
交叉编译QT5.8.0

将下载的qt-everywhere-opensource-src-5.7.0.tar.gz执行如下命令解压:

tar -xvf qt-everywhere-opensource-src-5.8.0.tar.xz

解压完成后,到源码下

cd qt-everywhere-opensource-src-5.7.0

修改交叉编译架构用到的信息:

vim 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
  
 include(../common/linux.conf)
 include(../common/gcc-base-unix.conf)
 include(../common/g++-unix.conf)
  QT_QPA_DEFAULT_PLATFORM = linuxfb
 QMAKE_INCDIR += /usr/local/tslib/include
 14 QMAKE_LIBDIR += /usr/local/tslib/lib

  # modifications to g++.conf
 QMAKE_CC                = /usr/local/arm/bin/arm-linux-gnueabihf-gcc -lts
 QMAKE_CXX               = /usr/local/arm/bin/arm-linux-gnueabihf-g++ -lts
  QMAKE_LINK              = /usr/local/arm/bin/arm-linux-gnueabihf-g++ -lts
 QMAKE_LINK_SHLIB        = /usr/local/arm/bin/arm-linux-gnueabihf-g++ -lts

 # modifications to linux.conf
  QMAKE_AR                = /usr/local/arm/bin/arm-linux-gnueabihf-ar cqs
 QMAKE_OBJCOPY           = /usr/local/arm/bin/arm-linux-gnueabihf-objcopy
  QMAKE_NM                = /usr/local/arm/bin/arm-linux-gnueabihf-nm -P
  QMAKE_STRIP             = /usr/local/arm/bin/arm-linux-gnueabihf-strip
  load(qt_config)

到源码下执行:

 ./configure -prefix /usr/local/qt-5.8 -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform  / linux-arm-gnueabi-g++  -tslib -I/usr/local/tslib/include  -L/usr/local/tslib/lib 

其中-prefix /usr/local/qt-5.8代表我们编译完QT5.8.0后要安装地址;-tslib代表QT对触摸板的支持,-I 和 -L后面分别为为第一步编译tslib的include和lib的安装目录。

注:在执行./configure时可能会出现很多错误,不过这些错误可能因为你的参数没指定对或交叉编译器的路径没指定对。

上述命令自动生成Makefile文件。
执行命令启动编译:

make

编译大概2个小时。
编译结束后,执行安装命令:

sudo make install

我们切换到目标目录下看看是否安装成功:

cd /usr/local/qt-5.8
ls

在这里插入图片描述
将/usr/local/qt-5.8/lib和/usr/local/tslib 拷贝到树莓派的文件系统中对应的目录中。
在树莓派上配置tslib并交叉编译一个能够在树莓派上运行的QT应用程序
在开发板串口命令窗口中输入:

vi /etc/profile

将其修改为以下内容:

export PATH
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=none
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:rotate=90:invertx

在这里插入图片描述
保存退出,执行命令(一定要执行,否则可能报错):

source /etc/profile

然后在串口命令窗中输入 vi /usr/local/tslib/etc/ts.conf 来配置触摸屏
把第二行的注释去掉,把ts设置成输入模式(注意把前面的空格也去掉)
在这里插入图片描述
下面编写测试程序来测试树莓派上

在这里插入图片描述
注:执行qt的可执行文件时要加参数 -qws
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值