飞凌 OKA40i-C 开发板 Linux 3.10 编译环境搭建:Ubuntu 14.04 依赖包一键安装与 3 大常见错误修复
第一次接触飞凌 OKA40i-C 开发板时,最让人头疼的就是编译环境的搭建。不同于常见的 x86 平台,嵌入式开发往往需要在特定版本的 Linux 系统上配置复杂的工具链和依赖库。本文将手把手带你完成 Ubuntu 14.04 环境下的一键依赖安装,并针对三个最常见的编译错误提供详细解决方案。
1. 环境准备:Ubuntu 14.04 依赖包一键安装
全志 A40i 的官方 SDK 对编译环境有严格要求,推荐使用 Ubuntu 14.04 64 位系统。以下是经过验证的完整依赖包安装脚本:
#!/bin/bash # 飞凌 OKA40i-C 开发板完整依赖安装脚本 sudo apt-get update && sudo apt-get install -y \ git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 \ x11proto-core-dev libx11-dev:i386 \ libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 \ tofrodos python-markdown libxml2-utils \ xsltproc zlib1g-dev:i386 gawk # 关键配置项 sudo dpkg-reconfigure dash # 选择"否"保留bash sudo ln -sf /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so注意:执行脚本前请确保至少有 20GB 可用磁盘空间。建议使用干净的 Ubuntu 14.04 系统以避免库版本冲突。
常见问题排查:
- 若遇到
Unable to locate package错误,请先运行sudo apt-get update - 32 位库安装失败时,确认已启用多架构支持:
sudo dpkg --add-architecture i386
2. SDK 路径配置与初始化
飞凌官方提供的 SDK 通常包含 lichee 和 android 两个目录。正确的路径配置能避免后续 80% 的编译问题:
# 推荐目录结构 /root/workspace/allwinner/ ├── bsp │ ├── lichee # 内核及uboot │ └── android # 安卓系统(可选)初始化环境变量:
cd /root/workspace/allwinner/bsp/lichee source env.sh # 设置交叉编译链验证环境配置:
echo $PATH | grep "sun8iw11p1" # 应显示工具链路径 arm-linux-gnueabihf-gcc -v # 应显示gcc版本5.3.13. 三大编译错误解决方案
3.1 build.sh 报错:lichee/out 目录异常
典型错误信息:
ERROR: buildroot output dir is not set correctly!根本原因:SDK 解压位置不符合编译脚本预期路径。
解决方案:
# 步骤1:清理旧编译产物(慎用!) rm -rf lichee/out/ # 步骤2:建立标准目录结构 mkdir -p /root/workspace/allwinner/bsp mv lichee /root/workspace/allwinner/bsp/ # 步骤3:重新编译 cd /root/workspace/allwinner/bsp/lichee ./build.sh && ./build.sh pack3.2 硬盘空间不足导致编译中断
当出现以下错误时:
No space left on device优化方案:
| 操作 | 命令 | 可释放空间 |
|---|---|---|
| 清理apt缓存 | sudo apt-get clean | 500MB-2GB |
| 删除旧内核 | sudo purge-old-kernels | 1-3GB |
| 增加swap空间 | sudo fallocate -l 4G /swapfile | 额外4GB虚拟内存 |
| 精简源码 | 删除android/out目录 | 5GB+ |
提示:编译完整 SDK 至少需要 70GB 空间,建议准备 100GB 以上硬盘
3.3 镜像打包失败:文件权限问题
常见报错:
pack: cannot stat 'sun8iw11p1_linux_xxx.img'解决方法分三步:
# 1. 检查文件是否存在 ls -lh lichee/tools/pack/ # 2. 添加执行权限 chmod +x lichee/tools/pack/*.sh # 3. 使用sudo重新打包 sudo ./build.sh pack4. 编译优化技巧
通过多年实践,我们总结出以下加速编译的方法:
并行编译配置:
# 根据CPU核心数设置并行任务数 # 查看CPU核心:grep -c ^processor /proc/cpuinfo make -j$(nproc) # 使用全部核心ccache 编译缓存配置:
sudo apt-get install ccache export USE_CCACHE=1 export CCACHE_DIR=/tmp/ccache ccache -M 50G # 设置缓存大小典型编译时间对比:
| 配置 | 首次编译 | 增量编译 |
|---|---|---|
| 无优化 | 6小时+ | 2小时+ |
| -j8 + ccache | 4小时 | 30分钟 |
5. 镜像烧写验证
成功编译后会生成镜像文件:
lichee/tools/pack/sun8iw11p1_linux_oka40i_c_uart0.img烧写工具对比:
| 工具 | 方式 | 速度 | 稳定性 |
|---|---|---|---|
| PhoenixSuit | USB线刷 | 快 | ★★★★☆ |
| PhoenixCard | SD卡刷 | 慢 | ★★★☆☆ |
推荐使用 PhoenixSuit 线刷:
# Windows端操作 PhoenixSuit.exe -i sun8iw11p1_linux_oka40i_c_uart0.img开发板进入烧录模式的方法:
- 断开电源
- 按住板载"UBOOT"按钮
- 连接USB OTG线
- 保持按键3秒后松开
6. 串口调试技巧
连接串口后,可通过以下命令监控启动过程:
screen /dev/ttyUSB0 115200关键启动日志分析:
| 日志片段 | 含义 | 正常状态 |
|---|---|---|
| U-Boot SPL | 第一阶段引导 | 显示版本号 |
| DRAM: | 内存初始化 | 显示正确容量 |
| [OK] | 服务启动 | 无failed项 |
遇到启动卡顿时,可尝试修改bootargs:
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 saveenv7. 进阶问题排查
当遇到难以解决的编译问题时,可以:
- 检查环境变量:
env | grep -E "PATH|CROSS_COMPILE"- 查看详细编译日志:
make V=1 # 显示详细编译命令- 对比官方配置:
diff .config sun8iw11p1smp_oka40i_c_defconfig记得每次修改配置后需要完全清理再编译:
make clean && make mrproper