1. 环境搭建
任务目标
在Ubuntu 22.04主机上搭建面向嵌入式AI部署的交叉编译与运行时环境,具体包括:安装ARM交叉编译器、CMake构建工具、Python虚拟环境及ONNX Runtime(ARM64版本),并验证工具链可用性。本案例不涉及具体模型转换或推理代码,仅完成环境就绪与自检。
环境依赖
- 主机系统:Ubuntu 22.04 x86_64
- 目标平台:ARM64(aarch64)Linux,例如树莓派4B或RK3588开发板
- 需联网安装以下软件包
完整实现
以下脚本一次性完成全部环境配置。将脚本保存为 setup_env.sh,在终端执行 bash setup_env.sh。
#!/bin/bash
set -e
# 1. 系统依赖
sudo apt update
sudo apt install -y build-essential cmake git python3 python3-pip python3-venv \
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
# 2. 创建Python虚拟环境
python3 -m venv ~/ai_deploy_env
source ~/ai_deploy_env/bin/activate
# 3. 安装Python依赖(numpy为onnxruntime的依赖)
pip install --upgrade pip
pip install numpy
# 4. 下载ARM64版ONNX Runtime(1.17.0,Python接口)
wget https://github.com/microsoft/onnxruntime/releases/download/v1.17.0/onnxruntime-linux-aarch64-1.17.0.tgz
tar -xzf onnxruntime-linux-aarch64-1.17.0.tgz
sudo cp -r onnxruntime-linux-aarch64-1.17.0/lib/* /usr/local/lib/
sudo ldconfig
# 5. 验证工具链
echo "=== 交叉编译器版本 ==="
aarch64-linux-gnu-gcc --version | head -n 1
echo "=== CMake版本 ==="
cmake --version | head -n 1
echo "=== Python虚拟环境 ==="
which python3
python3 --version
echo "=== ONNX Runtime库文件 ==="
ls /usr/local/lib/libonnxruntime.so*
echo "=== 编译测试(交叉编译一个最小C程序) ==="
cat <<EOF > test.c
#include <stdio.h>
int main() { printf("ARM64 OK\n"); return 0; }
EOF
aarch64-linux-gnu-gcc test.c -o test_arm64
file test_arm64
运行与验证
- 执行配置:
bash setup_env.sh,脚本运行结束无报错即完成安装。 - 验证交叉编译产物:脚本最后输出
test_arm64: ELF 64-bit LSB executable, ARM aarch64,说明交叉编译器工作正常。 - 验证ONNX Runtime:在虚拟环境中执行
python3 -c "import onnxruntime; print(onnxruntime.get_available_providers())",预期输出包含CPUExecutionProvider,且无导入错误。 - 验证目标板运行(可选):将
test_arm64拷贝到ARM64开发板,执行后输出ARM64 OK,确认二进制可在目标平台运行。
判定标准
- 脚本执行无错误退出(
set -e保证中途失败即停止)。 file test_arm64显示架构为ARM aarch64。- Python虚拟环境中可正常导入
onnxruntime并列出可用执行提供程序。
常见问题
- wget下载失败:若网络受限,可手动从GitHub Releases页面下载对应tgz包,放到脚本同目录后注释掉wget行,直接执行解压与拷贝步骤。
- sudo ldconfig后仍找不到库:确认
/usr/local/lib在/etc/ld.so.conf中已包含,或使用export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH临时生效。 - Python版本冲突:本案例使用Python 3.10(Ubuntu 22.04默认),若系统Python版本不同,建议先安装python3.10-venv再创建虚拟环境。