https://blog.csdn.net/sinat_20006769/article/details/79081154
https://blog.csdn.net/u012175418/article/details/52704734
1.交叉编译工具:arm-linux-gnueabihf-gcc (野火® i.MX6ULL Mini开发板提供的,可与其不同)
2.Qt源码版本是:qt-everywhere-opensource-src-4.8.7 http://mirrors.ustc.edu.cn/qtproject/archive/qt/5.7/5.7.0/submodules/
3.tslib源码版本是:tslib-1.4 https://github.com/libts/tslib/releases/tag/1.4
移植
我们需要从 Qt Downloads 下载 5.7 版本的源码:qt-everywhere-opensource-src-5.7.0.tar.gz ,为什么选择 5.7 版本的软件呢?因为 5.7 版本以后,将不再支持 Windows XP ,为了保持兼容性才选择这个版本。
将“arm-gcc.tar.gz”解压到Ubuntu 系统的文件夹“/usr/local/arm”中。
然后修改环境变量,切换到home目录,然后输入命令“vim .bashrc”,打开设置环境变量的文件“.bashrc”,将环境变量修改为“export PATH=$PATH:/usr/local/arm/arm-gcc/bin”
保存退出,然后更新一下环境变量,输入命令“source .bashrc”。
source .bashrc
接着测试一下,编译器路径设置的对不对。如下图,在Ubuntu 命令行中输入命令”arm”,
然后按键盘”Tab”,出现编译器“arm-none-linux-gnueabi-gcc-4.8.2”,这就说明编译
器路径设置正确。
对触摸屏信号的获取、校正、滤波处理,均采用开源的tslib,本文采用的tslib版本为最新的tslib1.4(可以从本文提供的链接中下载tslib1.4)。
1.将下载好的tslib1.4拷贝到/home/lz/transplant目录下(可以根据自己的系统选择某一目录),然后执行解压缩命令
tar -vxf tslib-1.4.tar.gz
切换到tslib目录: cd tslib
安装交叉编译tslib必须的一些工具(可以先查看是否已安装,ubuntu16.04自带这些工具,可跳过)
我这里是ubuntu18.04
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
2.利用脚本写编译过程
在tslib文件夹下新建文件configTslib14.sh
vi configTslib14.sh
configTslib14.sh脚本文件内容如下:
#!/bin/sh
make clean && make distclean
echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache
CC=/usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-gcc ./configure --host=arm-linux --prefix=/opt/tslib1.4 --cache-file=arm-linux.cache
运行脚本文件
./configTslib14.sh
如果出现错误:configure.ac:172: error: possibly undefined macro: AC_MSG_ERROR
解决方法:
sudo apt-get install pkg-config
然后编译
make
安装
sudo make install
执行结束后,我们查看一下是否安装成功,执行命令:
ls /opt/tslib1.4
如果出现bin,etc,include,lib这前4个目录,如下图所示,说明交叉编译并安装tslib成功。
1、首先将下载的qt-everywhere-opensource-src-5.7.0.tar.gz解压,然后进去文件夹下
tar -vzxf qt-everywhere-opensource-src-5.7.0.tar.gz
cd qt-everywhere-opensource-src-5.7.0
2、修改交叉编译架构用到的信息:
gedit 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_QPA_DEFAULT_PLATFORM = linux #eglfs
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
QMAKE_AR = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP = /usr/local/arm/arm-gcc/bin/arm-linux-gnueabihf-strip
load(qt_config)
注意:这里最好指定交叉编译工具的绝对路径(参考别人的博客时告之,有多个编译工具时,最好指定绝对路径)
3、创建一个脚本文件(autoConfigure.sh),用于生成Makefile,执行命令
gedit autoConfigure.sh
autoConfigure.sh脚本内容:
#!/bin/sh
./configure \
-v \
-prefix /opt/qt-5.7.0 \
-release \
-opensource \
-no-accessibility \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-zlib \
-tslib \
-skip qtdeclarative \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-I/opt/tslib1.4/include -L/opt/tslib1.4/lib
其中-prefix /opt/qt-5.7.0代表我们编译完QT5.4.1后要安装地址;-tslib代表QT对触摸板的支持,-I 和 -L后面分别为为第一步编译tslib的include和lib的安装目录。
注意,在脚本中有一个很重要配置:
-skip qtdeclarative \
,如果不加上这一句,在make时出现错误:
Project MESSAGE: Hunspell not found! Spell correction will not be available.
Project ERROR: Unknown module(s) in QT: quick
Makefile:44: recipe for target 'sub-virtualkeyboard-make_first' failed
make[2]: *** [sub-virtualkeyboard-make_first] Error 3
或者
sh:1:python:not found
Project ERROR:Building QtQml requires Python.
Makefile:44: recipe for target 'module-qtdeclarative-install_subtargets' failed
make: *** [module-qtdeclarative-install_subtargets] Error 3
参考网上帖子:How to install and build Qt5.7-everywhere for beaglebone black- OS debian?
然后执行:make -j4
然后执行:sudo make install
安装文件被安装到路径: /opt/qt-5.7.0/
ls /opt/qt-5.7.0/
如果出现以下文件夹,则制作成功
直接使用 /opt/qt-5.7.0/bin/qmake 来编译windows下qtcreator写好的项目
1.打开设置环境变量的文件“.bashrc”,将 /opt/qt-5.7.0/bin/qmake 取别名为 qmake
alias qmake="/opt/qt-5.7.0/bin/qmake"
2.进去虚拟机的共享文件夹QT项目下(以test2UDP为例)
cd /mnt/hgfs/share/test2UDP
test2UDP文件内容,如下图:
3、执行qmake,生成Makefile
qmake
4、执行MMakefile
make
5、编译成功后生成,可执行文件 ARM架构的 test2UDP