正点开发板I.MX6U 移植 Qt5.12.9
运行环境win10, Ubuntu20.04 虚拟机,Ftp 传输软件FileZilla win10 和 linux 传输文件
1.下载交叉编译器
https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gn
ueabihf/
。
2.安装交叉编译器
FileZilla
拷贝
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 到
Ubuntu
虚拟机
在
Ubuntu
目录下创建
/usr/local/arm
文件夹,为下面安装到
/usr/local/arm
这个文件夹做准备。
sudo mkdir /usr/local/arm
解压交叉编译器压缩包至
/usr/local/arm
目录下,稍等片刻,解压完成如下。
sudo tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/local/arm/
使用
vi
指令编辑
/etc/profile
这个文件
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
3 验证通过交叉编译器
要使用此编译器,还要在
Ubuntu
上安装一些库。
sudo apt-get install lsb-core lib32stdc++6
在终端输入
arm-linux-gnueabihf-gcc -v
来查看安装的交
叉编译器版本号。看到如下结果,表明成功!
4.获取 tslib
获取
tslib
的源码,
git
地址为
https://github.com/kergoth/tslib
。
tslib
源码已经放到开发板光
将 压缩包发送到 Ubuntu
中并解压,得到名为“
tslib-1.21
”的目录,此目录下就是
tslib
源码。
拷贝至
Ubuntu
虚拟机目录下,将其解压,得到
tslib-1.21
文件夹。
tar xf tslib-1.21.tar.bz2
进入
tslib-1.21
文件夹下
cd tslib-1.21
5.编译tslib
生成 Makefile ,还需要安装以下软件
sudo apt-get update
sudo apt-get install autoconf automake libtool
执行
autogen.sh
生成
Makefile
,以编译源码
执行下面的指令
./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/zhangcao/tslib-1.21/arm-tslib
直接执行
make
编译及
make install
安装。
编译出现警告不用理会以,安装完成后在当前目录下生成一个
arm-tslib
目录。也是我们上面指
令的编译输出目录路径。可以查看生成目录下有以下内容。
6.下载 Qt5.12.9 源码
我们可以在
Qt
下载地址
https://download.qt.io/
找到
https://download.qt.io/archive/qt/5.12/5.12.9/si
ngle/
,进入下载页面如下。
在
Windows
上下载好上面
qt-everywhere-src-5.12.9.tar.xz
源码拷贝到
Ubuntu
虚拟机下,或者直
接右键上面的下载项,复制下载地址链接,在
Ubuntu
下直接使用
wget
指令下载。
在
Ubuntu
使用
wget
指令下载
qt-everywhere-src-5.12.9.tar.xz
源码如下。
wget https://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xz
解压下载好的 qt-everywhere-src-5.12.9.tar.xz 源码压缩包。解压时间较长,请耐心等待。
tar xf qt-everywhere-src-5.12.9.tar.xz
在当前目录出现
qt-everywhere-src-5.12.9
目录夹,此文件夹就是我们解压后的目录。进入此目
录。
7.修改qmake.conf
编辑
mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
,配置相关编译器及路径。
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_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 =
arm-linux-gnueabihf-gcc
QMAKE_CXX =
arm-linux-gnueabihf-g++
QMAKE_LINK =
arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB =
arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR =
arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY =
arm-linux-gnueabihf-objcopy
QMAKE_NM =
arm-linux-gnueabihf-nm -P
QMAKE_STRIP =
arm-linux-gnueabihf-strip
load(qt_config)
8.配置编译选项
查看编译选项,输入
./configure -help
指令,查看可配置选项
由于配置较长,按需要编译,编者总结了配置项,写了一个脚本
vi autoconfigure.sh
在这个
autoconfigure.sh
添加以下内容。复制时注意,每行前面不要留空格。
./configure -prefix /home/zhangcao/linux/qt-everywhere-src-5.12.9/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/zhangcao/linux/tslib-1.21/arm-tslib/include \
-L/home/zhangcao/linux/tslib-1.21/arm-tslib/lib \
-recheck-all
/home/zhangcao/linux 是我存放tslib的目录具体使用根据自己的路径设置
赋予脚本可执行权限。
chmod +x autoconfigure.sh
直接执行
autoconfigure.sh
。配置需要一段时间,请耐心等待!
sudo apt-get install g++ //
配置前请先安装
g++
./autoconfigure.sh
直接执行
make
开始编译