嵌入式Linux交叉编译工具链:以米联客RK3588开发板为例
前言做嵌入式开发的同学大多经历过这个困惑为什么不能在开发板上直接编译代码答案很简单——你的开发板可能只有512MB内存、1GB存储跑个系统都费劲更别说编译大型项目了。所以我们需要在PCx86_64上编译出能在开发板ARM64上运行的程序这就是交叉编译。本文以米联客MLK-RK01-CR01-RK3588为例完整走一遍交叉编译工具链的搭建流程。RK3588是瑞芯微推出的旗舰级SoC采用四核Cortex-A76 四核Cortex-A55架构主频高达2.4GHz支持8K视频解码、6TOPS NPU是当前嵌入式Linux开发的热门平台。米联客官方论坛链接为资料下载 FPGAAI数字世界 -开发环境说明:虚拟机使用的是米联客论坛提供的Ubuntu22.04版本开发包为论坛中的mlk-sdk-3588-v1.2.0.tar.gz开发包开发板型号为MLK-RK01-CR01-RK3588具体的硬件参数如下图所示一、交叉编译工具链是什么1.1 工具链的组成一个完整的交叉编译工具链包含以下组件编译器Compiler— 将C/C源码编译为目标平台汇编如gcc、g、clang汇编器Assembler— 将汇编代码转为机器码如as链接器Linker— 将多个目标文件链接为可执行文件如ld二进制工具 — 反汇编、查看符号、strip等如objcopy、objdump、stripC库 — 提供标准库实现如glibc、musl、uClibc-ng1.2 命名规则RK3588使用的工具链命名aarch64-none-linux-gnu → ARM64, 无厂商, Linux, glibc通用aarch64-linux-gnu-gcc → ARM64, Linux, glibcRockchip SDK默认前缀工具链获取我们在虚拟机中解压我们的RK01开发包来到开发包下的/mlk-sdk-3588-v1.2.0/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu路径下可以看到编译器程序所在的bin文件夹配置交叉编译工具链环境工具链路径/mlk-sdk-3588-v1.2.0/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnubin 子目录存放所有编译工具gcc、g、as、ld、objdump 等。3.1 临时配置环境变量当前终端有效关闭终端失效打开终端执行下面命令将工具链 bin 目录加入系统 PATH同时定义交叉编译前缀与架构export PATH/home/uisrc/mlk-sdk-3588-v1.2.0/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATHexport CROSS_COMPILEaarch64-none-linux-gnu-export ARCHarm64用aarch64-none-linux-gnu-gcc -v可以查看是否配置成功这个时候我们就可以把自己编写的程序放到交叉编译工具里面交叉编译后放到板子上使用了。交叉编译是嵌入式 Linux 开发的基础手段利用 PC 的算力完成编译规避开发板硬件资源不足的问题。本套工具链不仅可以编译普通应用程序也可以用于内核、UBoot 的编译为后续 RK3588 的底层开发与应用开发打下基础。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →