1. 交叉编译环境概述
在嵌入式开发领域,交叉编译是开发者必须掌握的核心技能之一。所谓交叉编译,就是在一个平台上生成另一个平台上的可执行代码。具体到我们的场景,就是在x86架构的Ubuntu 20.04系统上,编译生成能够在ARM架构嵌入式设备上运行的库和应用程序。
为什么需要交叉编译?主要原因有三点:
- 嵌入式设备通常资源有限,无法承担本地编译的巨大开销
- 开发机(如PC)拥有更强的计算能力和更完善的开发环境
- 统一开发环境有利于团队协作和持续集成
本次交叉编译的目标库包括:
- OpenCV:计算机视觉库
- zlib:数据压缩库
- OpenSSL:加密通信库
- FFmpeg:多媒体处理库
- librga:Rockchip图像加速库
- libdrm:直接渲染管理库
- mpp:Rockchip多媒体处理框架
这些库的组合构成了一个完整的嵌入式多媒体处理开发环境,适用于智能摄像头、边缘计算设备等场景。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具链配置
2.1 系统基础环境
首先确保Ubuntu 20.04系统已经安装必要的开发工具:
bash复制sudo apt update
sudo apt install -y build-essential cmake git pkg-config
sudo apt install -y libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev
sudo apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
sudo apt install -y libssl-dev curl wget unzip
注意:Ubuntu 20.04默认的OpenSSL版本是1.1.1,如果需要特定版本,需要自行编译安装。
2.2 交叉编译工具链选择
根据目标平台的不同,交叉编译工具链的选择也有所差异。常见的ARM架构工具链有:
- arm-linux-gnueabihf:适用于ARMv7架构
- aarch64-linux-gnu:适用于ARMv8 64位架构
- 厂商定制工具链(如Rockchip提供的工具链)
以arm-linux-gnueabihf为例,安装命令如下:
bash复制sudo apt install -y gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
验证工具链是否安装成功:
bash复制arm-linux-gnueabihf-gcc --version
2.3 环境变量配置
为了方便后续编译,建议设置以下环境变量:
bash复制export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export AR=arm-linux-gnueabihf-ar
export LD=arm-linux-gnueabihf-ld
export RANLIB=arm-linux-gnueabihf-ranlib
export STRIP=arm-linux-gnueabihf
