编译Tslib和Qt源码并移植开发板测试

1.编译Tslib

下载Tslib

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

配置源码生成 Makefile,执行前先安装 automake 工具

sudo apt-get install autoconf automake libtool

新建arm-tslib文件夹,用于存放编译输出的内容

mkdir arm-tslib

编写auto_generate.sh自动编译脚本

#!/bin/sh
./autogen.sh
./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cac    he-file=arm-linux.cache -prefix=/home/hyq/linux/tool/tslib-1.21/arm-tslib
make -j4
make install

配置交叉编译工具链和设置安装路径

chmod 777 auto_generate.sh

./auto_generate.sh

自动编译安装到arm-tslib目录

 拷贝 arm-tslib 到开发板文件系统的根文件

 vi /etc/profile配置tslib

export TSLIB_ROOT=/arm-tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so
export QT_QPA_FB_TSLIB=1QT_QPA_FB_TSLIB=1

 电容屏不需要校准,TSLIB_CALIBFILE=/etc/pointercal 可不用设置。

测试tslib

./ts_test

测试之前确保 /dev/input/event1设备节点正常可用,如果./ts_test没有反应,可单独测试/dev/input/event1

hexdump /dev/input/event1

 2.Qt源码编译移植

一般不建议自己移植 Qt,因为自己移植 Qt 虽然能用,但是在 Qt 官网移植的 Qt 在不结合第三方库的情况下编译,编译出来的库会有一部分功能不能用(音频、视频、网络类不能用)。可使用buidroot和yocto编译文件系统。

创造存放目录下载源码并解压

mkdir qt5.5.1
 wget http://download.qt.io/new_archive/qt/5.5/5.5.1/single/qt-everywhere-opensource-src-5.5.1.tar.xz
tar xf qt-everywhere-opensource-src-5.5.1.tar.xz

新建arm-qt文件夹,用于存放编译输出的内容

mkdir arm-qt

创建自动配置脚本autoconfigure.sh

#!/bin/sh
./configure \
-prefix /home/hyq/linux/tool/qt5.5.1/qt-everywhere-opensource-src-5.5.1/arm-qt \
-confirm-license \
-opensource \
-shared \
-release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-no-fontconfig \
-nomake examples -nomake tools -nomake tests -no-iconv \
-tslib \
-I/home/hyq/linux/tool/tslib-1.21/arm-tslib/include \
-L/home/hyq/linux/tool/tslib-1.21/arm-tslib/lib
exit

指定编译输出路径

-prefix /home/hyq/linux/tool/qt5.5.1/qt-everywhere-opensource-src-5.5.1/arm-qt 

指定tslib的路径

-I/home/hyq/linux/tool/tslib-1.21/arm-tslib/include \
-L/home/hyq/linux/tool/tslib-1.21/arm-tslib/lib

指定编译的平台(QT是跨平台的,指定运行的平台)

-xplatform linux-arm-gnueabi-g++

qtbase/mkspecs下有很多平台选择

 因为前面autoconfigure.sh 里的参数-xplatform 选择了 linux-arm-gnueabi-g++,所以需要修改相应平台的配置文件

vi 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

#指定Qt显示驱动方式
QT_QPA_DEFAULT_PLATFORM = linuxfb 

#指定处理器架构
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard 
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard

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

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

# modifications to linux.conf
QMAKE_AR = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip

#指定头文件,需预编译
QMAKE_INCDIR += /home/hyq/linux/tool/tslib-1.21/arm-tslib/include
#指定库文件,需预编译
QMAKE_LIBDIR += /home/hyq/linux/tool/tslib-1.21/arm-tslib/lib
load(qt_config)

1.为了防止编译出错,交叉编译工具链使用了绝对路径(电脑上已安装多个交叉编译工具),也可以相对路径的

2.指定一些第三方的头文件和库文件路径,比如tslib、sqlite3

给所有者执行权限

chmod u+x autoconfigure.sh

./ autoconfigure.sh

qmake 创建完成后,看到“Just run make”输出,说明是可以开始编译了,如果你还没有看见
这句话,请再检查路径是否配置正确,编译器路径等是否正确!

开始编译

 make -j 16

执行 make install 安装到指定文件夹arm-qt

 make install

安装完毕查看结果arm-qt

  拷贝 arm-qt 到开发板文件系统的根文件

同 tslib 一样,我们要设置 Qt 的环境变量,好让系统知道 Qt 库的位置在哪里!vi /etc/profile配置

export QT_ROOT=/arm-qt
#export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1:edevmouse:/dev/input/event3
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_FONTDIR=/arm-qt/lib/fonts
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$QT_ROOT/lib:$QT_ROOT/plugins/platforms

edevmouse:/dev/input/event3是鼠标的配置,用不到

要想 Qt 程序显示中文,请自行将 windows 下的中文字库放到
/arm-qt/lib/fonts 这个目录下就可以了。

在Qt Creator中配置配置 Kits构建套件

1.首先添加一个编译器

 imx6g++和imx6gcc都是编译Qt源码和编译Linux源码的交叉编译工具链

arm-linux-gnueabihf-g++ arm-linux-gnueabihf-gcc

2.添加一个Qt Versions

 其中qmake路径就是刚才编译Qt源码安装目录arm-qt/bin下的qmake

3.添加一个构建套件Kit

 编译器和Qt version都选择上面第一和第二步创建的即可

开发板运行环境的构建套件Kit添加完毕后,创建Qt程序,使用该套件编译出来即可在开发板上运行。

命令 行交叉编译 Qt  项目

不用安装Qt Creator,也不需要编辑建套件Kit,直接在工程目录下(xxx.pro)执行qmake生成Makefile文件,然后make即可完成编译

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值