一、X86主机环境搭建(交叉编译端)
- 安装交叉编译工具链
从RK3588 SDK或官方ARM工具链获取aarch64-linux-gnu编译器,例如:
bashCopy Code
示例:安装gcc-arm-10.3工具链(路径参考SDK)
wget https://developer.arm.com/downloads/-/gnu-a
tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz -C /opt
export PATH=/opt/gcc-arm-10.3/bin:$PATH # 临时生效:ml-citation{ref=“3,4” data=“citationList”}
- 配置依赖库
安装X86主机编译所需的开发工具和库:
bashCopy Code
sudo apt-get install build-essential cmake libssl-dev libgl1-mesa-dev
libxcb-xinerama0-dev libfontconfig1-dev libfreetype6-dev # :ml-citation{ref=“4,6” data=“citationList”}
二、RK3588设备环境配置(ARM端)
- 基础软件安装
在RK3588的Ubuntu 20.04上直接通过APT安装运行时库:
bashCopy Code
sudo apt update
sudo apt install libxcb1 libfontconfig1 libgl1-mesa-dev openssl # :ml-citation{ref=“6,7” data=“citationList”}
- 部署交叉编译产物
将X86主机编译的程序/库拷贝到RK3588,例如通过SCP:
bashCopy Code
X86主机操作(假设RK3588 IP为192.168.1.100)
scp ./hello_world user@192.168.1.100:/home/user/
三、交叉编译示例
示例1:简单C程序交叉编译
X86主机编写代码(hello.c):
cCopy Code
#include <stdio.h>
int main() { printf("Hello RK3588!\n"); return 0; }
交叉编译命令:
bashCopy Code
aarch64-none-linux-gnu-gcc hello.c -o hello_world --sysroot=/opt/sysroot # :ml-citation{ref="2,3" data="citationList"}
注:--sysroot需指向RK3588系统库路径(可从设备拷贝 /lib 和 /usr/lib 到X86主机)。
示例2:Qt程序交叉编译
配置Qt编译环境:
bashCopy Code
./configure -prefix /opt/qt5-arm \
-xplatform linux-aarch64-gnu-g++ \
-sysroot /opt/sysroot \
-opensource -confirm-license # :ml-citation{ref="2,4" data="citationList"}
需提前在qtbase/mkspecs中配置交叉编译工具链文件linux-aarch64-gnu-g++.conf2。
编译并部署:
bashCopy Code
make -j$(nproc) && make install
scp -r /opt/qt5-arm user@192.168.1.100:/opt/ # 拷贝Qt库到RK3588:ml-citation{ref="4" data="citationList"}
四、关键注意事项
库路径一致性:X86主机的sysroot需与RK3588的库版本一致,避免兼容性问题23。
环境变量隔离:交叉编译时需清除X86主机的本地环境变量干扰(如设置PKG_CONFIG_PATH指向ARM库)4。
调试工具:建议在X86主机安装gdb-multiarch,用于调试ARM程序