#ubuntu16.04+Qt5.9.3搭建交叉编译环境
0 安装交叉编译工具链
####0-0 下载交叉编译工具链 linaro版本
gcc-linaro-arm-linux-gnueabihf
解压到任意路径,添加路径到环境变量,profile或~/.bashrc ,然后source
修改profile文件后需要重启生效
0-1输入arm,按tab确认环境变量是否正确
##1 交叉编译tslib
####1-0 下载tslib-master源码,解压
####1-1 安装工具
apt-get install autoconf automake dh-autoreconf libtool
1-2 执行脚本
./autogen.sh
####1-3 配置
./configure --host=arm-none-linux-gnueabi--cache-file=arm-none-linux-gnueabi.cache --enable-inputapi=no ac_cv_func_malloc_0_nonnull=yes --prefix=/opt/tslib/ CC=/home/toolchain/arm-2014.09/bin/arm-linux-gnueabihf-gcc
注意CC是交叉编译链的路径
#### 1-4 编译
make
#### 1-5 安装
make install
1-6 移植到开发板,修改配置文件和环境变量
1-6-0
通过超级终端,打开tslib文件夹下的etc/ts.conf文件
将# module_raw input一行前面的符号和空格去掉,注意空格也不能留。
1-6-1
再打开环境变量文件/etc/profile,并添加相应内容
[root@DCP-3000L usr]# vi /etc/profile
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event2
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
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
其中,TSLIB_ROOT更换为自己实际存放的路径;
另外,TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下那个文件
1-6-2
执行测试命令,重启开发板(使系统读取profile环境变量),进入tslib/bin目录,执行触摸屏校准程序
[root@DCP-3000L usr]# ./ts_calibrate
##2.安装Qt5.9.3交叉编译环境
2-1下载Qt5.9.3 源码,xxxxxx.run
添加可执行权限,然后安装,勾选所有套件,直到安装完毕
2-2进入源码目录,添加配置文件
touch autoconfig.sh
vim autoconfig.sh
./configure
-prefix /opt/qt5.9.3-arm
-confirm-license
-opensource
-release
-make libs
-xplatform linux-arm-gnueabi-g++
-pch
-qt-libjpeg
-qt-libpng
-qt-zlib
-tslib
-no-opengl
-no-sse2
-no-openssl
-no-separate-debug-info
-make libs
-nomake tools
-nomake examples
-nomake tests
-silent
-I /opt/tslib/include
-L /opt/tslib/lib
-c++std c++11
-strip
-no-dbus
-no-qml-debug
-no-journald
-qpa linuxfb -linuxfb
-skip qt3d
-skip qtandroidextras
-skip qtcanvas3d
-skip qtdatavis3d
-skip qtdoc
-skip qtgamepad
-skip qtgraphicaleffects
-skip qtmacextras
-skip qtnetworkauth
-skip qtpurchasing
-skip qtquickcontrols
-skip qtquickcontrols2
-skip qtremoteobjects
-skip qtsvg
-skip qttools
-skip qtwayland
-skip qtwebchannel
-skip qtwebengine
-skip qtwebsockets
-skip qtwebview
-skip qtx11extras
-skip qtwinextras
chmod a+x autoconfig.sh
-qt-mouse-tslib: 表示将使用 tslib 来驱动触摸屏;
**-I /home/user/libfile/tslib/include **
-L /home/user/libfile/tslib/lib 对应的就是上一步移植的tslib的头文件和库文件路径
-prefix=(自己的路径)
2-3安装库arm-linux-gnueabi-ar(可选)
sudo apt install binutils-arm-linux-gnueabi
我在make过程中出现了error,根据系统提示安装指定的库可以解决
2-4再次确认环境变量
建议在/etc/profile 和 ~/.bashrc中都添加交叉工具链的环境变量,然后source
2-5修改qmake.conf文件
cd /home/xxxx/Qt5.9.3/5.9.3/Src/qtbase/mkspecs/linux-arm-gnueabi-g++/
vim qmake.conf
#
# qmakeconfiguration 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)
# modifications tog++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts
注意添加hf
#modifications tolinux.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)
QMAKE_INCDIR =/opt/tslib/include
QMAKE_LIBDIR =/opt/tslib/lib
2-4开始编译
./autoconfig.sh
make
或
make jx
x = 机器核心数
####2-5安装交叉编译后的Qt库
sudo make install
然后去/opt/路径下查看安装的文件
####2-6设置qmake-arm的环境变量
alias qmake-arm=/生成qmake的路径
source 生效
输入qmake-arm -v 验证版本
至此,Qt的嵌入式开发环境安装完成
###3 移植Qt到开发板
3-0拷贝上一步搭建好的Qt开发环境库文件至开发板
3-1
打开环境变量文件/etc/profile,并添加相应内容设置环境变量
export QTDIR=/opt/qt5.9.3
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/event2
export QT_QWS_FONTDIR=QTDIR/lib/fonts
3-2
找一个demo应用程序,使用qmake-arm编译
qmake-arm -project
qmake-arm
make
然后拷贝执行程序到开发板验证