配置交叉编译环境 - PC to Raspi/RDK/...
配置交叉编译环境 - PC to Raspi/RDK/…
嵌入式 Linux 开发板性能有限,于是在电脑配置交叉编译环境,编译出 ARM 架构的软件
但是对于 C++ 此类依赖系统 glibc、stdc++ 的项目,电脑直接配置需要整理 glibc、stdc++版本,否则即便编译成功也不能正常运行。因此记录一下直接使用官方镜像配置交叉编译环境,不需再关心版本问题。
本文使用 Docker 进行配置,也可使用 QEMU 配置
准备工作
需要准备以下文件:
- raspberry pi 镜像/RDK镜像/……
需要安装以下环境
Windows
- WSL
- Docker
Linux
- Docker
配置 Docker
为 Docker 添加跨架构支持
1 | docker run --rm --privileged tonistiigi/binfmt --install all |
检查支持的架构
1 | docker buildx ls | grep arm64 |
1 | \_ default \_ default running v0.0.0+unknown linux/amd64 (+3), linux/arm64, linux/arm (+2), linux/ppc64le, (6 more) |
打包镜像
查看镜像文件的分区
1 | fdisk -l rdk-x3-ubuntu22-preinstalled-server-3.0.3-arm64.img |
输出为
1 | Disk rdk-x3-ubuntu22-preinstalled-server-3.0.3-arm64.img:7.19 GiB,7721713664 字节,15081472 个扇区 |
其中类型为 Linux 的分区,是根分区,将其挂载到一个目录
1 | sudo mkdir -pv /mnt/rdkx3_img |
然后把所有文件打包成一个 docker 镜像
1 | sudo tar -C /mnt/rdkx3_img -c . | docker import --platform linux/arm64 - rdkx3-img:3.0.3 |
完成
检查测试
检查 docker 镜像存在
1 | docker image ls |
1 | i Info → U In Use |
交互模式运行之
1 | docker run -it --platform linux/arm64 rdkx3-img:3.0.3 /bin/bash |
在此 Docker 容器中编译完成的包、可执行文件,可以直接复制到板子上运行