ubuntu Qt arm64交叉编译
tslib是一个用于触摸屏设备的开源函数库
ALSA为声卡提供的驱动组件
文章目录
准备环境
交叉编译器下载地址:https://developer.arm.com/downloads/-/gnu-a
qt源码下载地址:https://download.qt.io/archive/qt/
tslib下载地址:https://github.com/libts/tslib/releases
alse下载地址:https://www.alsa-project.org/wiki/Download
openssl下载地址:https://www.openssl.org/source/openssl-3.0.7.tar.gz
交叉编译器环境配置可以百度
注:qt下载太慢可以上科学,或者找镜像下载
有一个网站里面写了一个教程挺好的(但是我没有用过,只是参考了一下):https://doc.embedfire.com/linux/qt/embed/zh/latest/ebf_qt/install/install_arm.html#id1
编译tslib-1.22
# CC指定gcc编译器
# --prefix指定make install 目录
# --host指定编译平台
export CC=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
./configure \
CC=$CC \
--prefix=/home/tangtang/qtSource/tslib-1.22/build \
--host=arm-linux \
编译alse-1.2.8
export CC=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
./configure \
CC=$CC \
--prefix=/home/tangtang/qtSource/alsa-lib-1.2.8/build \
--host=arm-linux \
--enable-shared \
--disable-python \
--with-configdir=/home/tangtang/qtSource/alsa-lib-1.2.8/build/config \
--with-plugindir=/home/tangtang/qtSource/alsa-lib-1.2.8/build/plugin
编译openssl
export CC=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
./Configure linux-aarch64 \
--prefix=/home/tangtang/qtSource/openssl-3.0.7/build
编译Qt
1.修改mkspecs中的qmake.conf
根据自己需求确认平台然后进入那个文件夹
mkspecs/linux-aarch64-gnu-g++/qmake.conf
#
# qmake configuration for building with aarch64-linux-gnu-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 to g++.conf
QMAKE_CC = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
QMAKE_CXX = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
QMAKE_LINK = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-objcopy
QMAKE_NM = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-nm -P
QMAKE_STRIP = /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-strip
load(qt_config)
QMAKE_INCDIR=/home/tangtang/qtSource/tslib-1.22/build/include
QMAKE_LIBDIR=/home/tangtang/qtSource/tslib-1.22/build/lib
cd /home/tangtang/qtSource/qt-everywhere-src-5.15.7/qtbase/mkspecs/linux-aarch64-gnu-g++
export CC=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
export CXX=/opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
./configure \
-release \
-opensource \
-no-opengl \
-nomake tests \
-nomake examples \
-xplatform linux-aarch64-gnu-g++ \
-prefix /home/tangtang/qtSource/qt-everywhere-src-5.15.7/qtbase/build \
-tslib \
-I/home/tangtang/qtSource/tslib-1.22/build/include \
-L/home/tangtang/qtSource/tslib-1.22/build/lib \
-ssl \
-I/home/tangtang/qtSource/openssl-3.0.7/build/include \
-L/home/tangtang/qtSource/openssl-3.0.7/build/lib \
-recheck-all \
-sysroot /opt/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/aarch64-linux-gnu
需要指定sysroot 没有指定tslib引用不上
在没有X11 桌面环境中启动程序
没有x11环境,qt的以另一种渲染方式frameBuffer xfb方式
#
export QTDIR=/userdata/Qt
#指定键盘设备输入
export QWS_KEYBOARD=USB:/dev/input/event0
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#编译libiconv这个库,上一篇文件有介绍
export LD_PRELOAD=$QTDIR/lib/preloadable_libiconv.so
#指定触屏设备输入
#export QT_QPA_GENERIC_PLUGINS=tslib:/dev/event2
#qt编译好的plugins库
#这些文件bearer generic imageformats platforms platformthemes sqldrivers
#根据需要复制
#export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins/
#指定显示设备输出
#size 程序渲染的尺寸
#mmSize 触控尺寸
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=1920x1080:mmSize=1920x1080:offset=0x0:tty=/dev/tty1