WSL环境下树莓派4B ARM64交叉编译流程1. 开发环境架构目标在 Windows 的 WSL Ubuntu 环境中开发程序通过交叉编译生成可以运行在树莓派4B上的 ARM64 Linux 程序。整体流程Windows | | WSL2 Ubuntu | | aarch64-linux-gnu-gcc | ↓ ARM64可执行程序 | | scp传输 | ↓ Raspberry Pi 4B | | 运行程序2. 环境准备2.1 WSL安装Ubuntu推荐Ubuntu 20.04 LTSUbuntu 22.04 LTS查看系统版本cat /etc/os-release示例VERSION20.04.6 LTS VERSION_CODENAMEfocal2.2 配置软件源Ubuntu 20.04软件源代号focal检查cat /etc/apt/sources.list应该包含focal focal-updates focal-security更新sudo apt update3. 安装ARM64交叉编译工具链树莓派4B官方64位系统CPU架构ARMv8-A aarch64安装sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu4. 验证交叉编译环境执行aarch64-linux-gnu-gcc -v正确输出Target: aarch64-linux-gnu gcc version 9.x.x说明交叉编译器已经安装成功。5. 创建测试工程目录cross_test | ├── main.c └── Makefile创建mkdir ~/cross_test cd ~/cross_test6. 编写测试程序main.c#include stdio.h int main() { printf(Hello Raspberry Pi 4B\n); return 0; }7. 使用交叉编译器编译普通PC编译gcc main.c -o hello生成x86程序树莓派交叉编译aarch64-linux-gnu-gcc main.c -o hello生成ARM64 Linux程序8. 查看程序架构执行file hello正确结果ELF 64-bit LSB pie executable, ARM aarch64说明该程序可以运行在树莓派4B 64位系统。9. 上传程序到树莓派9.1 获取树莓派IP树莓派执行hostname -I例如192.168.31.1509.2 SSH连接格式ssh 用户名IP地址例如ssh pi192.168.31.1509.3 SCP上传程序WSL执行scp hello pi192.168.31.150:/home/pi作用WSL | | hello程序 | ↓ 树莓派/home/pi10. 树莓派运行程序登录ssh pi192.168.31.150进入目录cd /home/pi添加权限chmod x hello运行./hello输出Hello Raspberry Pi 4B表示交叉编译流程完成。11. 使用Makefile管理工程MakefileCCaarch64-linux-gnu-gcc TARGEThello SRCmain.c $(TARGET): $(CC) $(SRC) -o $(TARGET) clean: rm -f $(TARGET)编译make清理make clean12. C程序交叉编译C文件main.cpp编译aarch64-linux-gnu-g main.cpp -o app查看file app确认ARM aarch6413. CMake交叉编译流程项目结构project | ├── main.cpp ├── CMakeLists.txt └── toolchain.cmakeCMakeLists.txtcmake_minimum_required(VERSION 3.10) project(test) add_executable(app main.cpp)toolchain.cmakeset(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g)编译mkdir build cd build cmake .. \ -DCMAKE_TOOLCHAIN_FILE../toolchain.cmake make14. 工业项目实际开发流程实际树莓派设备开发流程Qt/C源码 | | CMake工程 | | 交叉编译 | | ARM64程序 | | scp部署 | | 树莓派4B | | GPIO/UART/I2C/SPI控制硬件15. 后续学习方向完成交叉编译后继续学习Linux应用开发文件IO线程进程串口通信Qt开发QWidget信号槽QThreadQTimer树莓派硬件接口GPIOUARTI2CSPI产品化systemd开机启动日志管理程序自动重启软件部署总结交叉编译的核心思想在性能更强的PCWSL Ubuntu上编译生成目标设备树莓派ARM64能够运行的程序。工具链aarch64-linux-gnu-gcc目标x86_64 PC ↓ ARM64 Linux程序 ↓ Raspberry Pi 4B运行