前言
-
最近在最新的 RT-Thread 上搭建 bsp qemu-virt64-aarch64 的编译环境,发现较新的 gcc 交叉编译器编译失败了。
-
经过尝试较旧版本的 gcc 交叉编译工具链,终于编译通过了
-
下载 gcc 交叉编译工具链,这里推荐使用 arm 官方的 gcc
-
下载地址 https://developer.arm.com/downloads/-/gnu-a
- 下载版本:
gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz
,下载地址(注意可能会变,可以在ARM 官方查找)
https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-a/10.2-2020.11/binrel/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz
配置编译环境
-
下载
gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz
后,进行解压,这里使用 ubuntu 20.04 Linux 环境 -
进入 RT-Thread bsp
qemu-virt64-aarch64
目录,新建一个 sh 脚本,如setup_env.sh
,内容如下
#!/bin/bash
export RTT_CC=gcc
export RTT_EXEC_PATH=/home/rtt/linux/tools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin
export RTT_CC_PREFIX=aarch64-none-elf-
export PATH=$PATH:$RTT_EXEC_PATH
echo "CC => ${RTT_CC}"
echo "PREFIX => ${RTT_CC_PREFIX}"
echo "EXEC_PATH => ${RTT_EXEC_PATH}"
-
注意
RTT_EXEC_PATH
为 解压后的 gcc 交叉编译工具链的路径 -
执行
source setup_env.sh
是环境变量更改生效 -
可以通过输入
$ aarch64-none-elf-gcc -v
查看环境变量是否生效
编译
-
直接使用 scons 就可以编译,如果没有安装过 scons,可以使用
sudo apt-get install scons
安装,然后scons --menuconfig
可以图形界面配置一下工程 -
scons 编译通过
运行 qemu
- 输入
./qemu.sh
即可运行了
小结
-
RT-Thread 5.0.1
qemu-virt64-aarch64
基于 armaarch64
平台,编译时交叉编译工具链不能太老或者太新。 -
可以使用 RT-Thread 官方的 musl 的交叉编译工具链编译,可以正常的编译,并且可以编译 rt-smart 版本