下载https://download.qt.io/archive/qt/5.15/5.15.2/single/ qt-everywhere-src-5.15.2.tar.xz
https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz

交叉编译QT5的库,参考资料
野火论坛-交叉编译Qt库(Qt5)

构建sysroot

在主控板上安装rsync,首先确保主控板已经脸上基础的网络

# pull一下源
sudo apt update
# 安装rsync
sudo apt-get install rsync
# 安装ssh客户端
sudo apt-get install openssh-client
# 安装ssh服务端
sudo apt-get install openssh-server

sudo apt-get install \
    libxcb1-dev \
    libxcb-xinerama0-dev \
    libxcb-icccm4-dev \
    libxcb-image0-dev \
    libxcb-keysyms1-dev \
    libxcb-render-util0-dev \
    libxcb-shape0-dev
sudo apt-get install -y libx11-dev freetds-dev libpq-dev libiodbc2-dev firebird-dev libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync1 libxcb-sync-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-glx0-dev libxi-dev libdrm-dev libxcb-xinerama0 libxcb-xinerama0-dev libatspi2.0-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxss-dev libxtst-dev libpci-dev libcap-dev libxrandr-dev libdirectfb-dev libaudio-dev libxkbcommon-x11-dev

sudo apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools libunwind-dev

sudo apt-get install -y libfreetype6-dev libicu-dev libsqlite3-dev libasound2-dev libnss3-dev libxss-dev libxtst-dev libpci-dev libcap-dev libxrandr-dev libdirectfb-dev libaudio-dev libavcodec-dev libavformat-dev libswscale-dev libts-dev libfontconfig1-dev

sudo apt-get install -y libssl-dev libdbus-1-dev libegl1-mesa-dev libgbm-dev libgles2-mesa-dev libgles2-mesa rsyslog  libjpeg-dev


sudo apt install \
    libxcb1-dev:arm64 \
    libxcb-xinerama0-dev:arm64 \
    libxcb-icccm4-dev:arm64 \
    libxcb-image0-dev:arm64 \
    libxcb-keysyms1-dev:arm64 \
    libxcb-render-util0-dev:arm64 \
    libxcb-shape0-dev:arm64 \
    libxcb-sync-dev:arm64 \
    libxcb-xfixes0-dev:arm64 \
    libxcb-xkb-dev:arm64 \
    libxkbcommon-x11-dev:arm64 \
    libegl1-mesa-dev:arm64 \
    libgles2-mesa-dev:arm64

在虚拟机上安装rsync

sudo apt-get update
sudo apt-get install rsync
sudo apt-get install openssh-client
sudo apt-get install openssh-server
sudo apt-get install libclang-dev 
sudo dnf install clang-devel
sudo apt install libssl-dev gperf pkg-config git bison ninja-build make build-essential libclang-dev libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev libatspi2.0-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

建议提前固定好设备的IP,我这里使用路由器固定设备IP为192.168.50.112

将当前开发板上的文件系统同步到虚拟机rootfs_copy文件夹

  1. 在虚拟机上创建rootfs_copy文件夹
    mkdir -p ~/WorkSpace/rootfs_copy
  2. 在虚拟机上创建~/.ssh/config 文件:
    vim ~/.ssh/config
  3. 在主控板上允许虚拟机登录
# 通过其他用户登录(如 linaro)
ssh linaro@192.168.50.112

# 切换到 root(需要知道 root 密码)
su - root

# 编辑 SSH 配置文件
nano /etc/ssh/sshd_config

# 输入以下内容
PermitRootLogin yes      # 允许 root 登录
PasswordAuthentication yes # 允许密码认证

# 保存后重启ssh服务
systemctl restart ssh
  1. 开始同步
    sudo rsync -avx root@192.168.137.202:/ ~/WorkSpace/rootfs_copy

nfs挂载和rsync同步文件,有些软连接库是使用绝对路径,交叉编译Qt源码时会出错。我们可以使用symlinks修改绝对路径为相对路径,在虚拟机上使用安装命令: sudo apt-get install symlinks 使用命 令: sudo symlinks -rc ~/WorkSpace/rootfs_copy

安装交叉编译工具链

交叉编译器下载地址:https://developer.arm.com/-/media/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz

编译QT5

auto.sh

#!/bin/sh
./configure \
-prefix /home/yoooola/WorkSpace/qt5-rk3566 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-opengl es2 \
-eglfs \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-separate-debug-info \

其他组件安装

组件所需包RK3566 特定要求
OpenGL ESlibgles2Mali-G52 GPU 驱动
EGLlibeglRockchip 专用 EGL 实现
GBMlibgbmKMS/DRM 支持
DRMlibdrm显示控制
OpenGL ES 2 安装
sudo apt-get update
sudo apt-get install gcc git bison python gperf pkg-config gdb-multiarch
sudo apt install build-essential

查看系统里是否存在opengl es 的库 - sudo find / -name '*mali*.so*' 2>/dev/null
我们这里发现是存在此库文件的

/usr/lib/aarch64-linux-gnu/perl/5.32.1/auto/Unicode/Normalize/Normalize.so
/usr/lib/aarch64-linux-gnu/rsyslog/mmnormalize.so
/usr/lib/aarch64-linux-gnu/libmali_hook.so.1.9.0
/usr/lib/aarch64-linux-gnu/libmali-bifrost-g52-g13p0-x11-gbm.so
/usr/lib/aarch64-linux-gnu/libmali.so.1.9.0
/usr/lib/aarch64-linux-gnu/libmali.so
/usr/lib/aarch64-linux-gnu/libmali.so.1
/usr/lib/aarch64-linux-gnu/libmali_hook.so
/usr/lib/aarch64-linux-gnu/libmali_hook.so.1